home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 July / Macworld (1999-07).dmg / Shareware World / Info / For Developers / Mops 3.4.sea / Quick Edit ƒ / Mops Glossary next >
Text File  |  1998-10-27  |  138KB  |  4,270 lines

  1. !  ( n addr -- )
  2.         Memory          Nuc2.asm/pnuc1
  3.     Stores 32-bit n at address.
  4.  
  5. "  ( -- addr len : <chars>" )
  6.         Lowstrings          Nuc2.asm/zBase
  7.     At compile time, scans until " is encountered. At run time, pushes the 
  8.     address and length of the enclosed string. E.g. " hi there" will, at 
  9.     run time, push (addr len) for the string 'hi there'. May be used 
  10.     outside a definition, with the proviso that the string will be stored 
  11.     at HERE, which means that more than one " ..." on a line will give 
  12.     unexpected results.
  13.  
  14. "STR"  ( -- addr len )
  15.         Lowstrings          Nuc2.asm/pnuc2
  16.     Scans for a string delimited by "..."
  17.  
  18. #  ( ud1 -- ud2 )
  19.         NumericConversion          Nuc2.asm/pnuc2
  20.     standard
  21.  
  22. #>  ( n -- addr len )
  23.         NumericConversion          Nuc2.asm/pnuc2
  24.     Ends numeric conversion. standard
  25.  
  26. #ALIGN  ( n -- n' )
  27.         Compiler          Nuc2.asm/pnuc3
  28.     Rounds n up to be a multiple of 4. Older synonym for #align4.
  29.  
  30. #ALIGN16  ( n -- n' )
  31.         Compiler          Nuc2.asm/pnuc3
  32.     Rounds n up to be a multiple of 16.
  33.  
  34. #ALIGN2  ( n -- n' )
  35.         Compiler          Nuc2.asm/pnuc3
  36.     Rounds n up to be a multiple of 2.
  37.  
  38. #ALIGN4  ( n -- n' )
  39.         Compiler          Nuc2.asm/pnuc1
  40.     Rounds n up to be a multiple of 4.
  41.  
  42. #ALIGN8  ( n -- n' )
  43.         Compiler          Nuc2.asm/pnuc3
  44.     Rounds n up to be a multiple of 8.
  45.  
  46. #OFF-ALIGN  ( n -- n' )
  47.         Compiler          pnuc3
  48.     (PowerMops only) Rounds n up to the 2-byte boundary between adjacent 
  49.     4-byte boundaries.
  50.  
  51. #S  ( |n| -- 0 )
  52.         NumericConversion          Nuc2.asm/pnuc2
  53.     standard
  54.  
  55. #THREADS  ( -- 8 )
  56.         Compiler           Nuc2.asm/pnuc1
  57.     A constant.
  58.  
  59. #TIB  ( -- n )
  60.         compiler          Nuc2.asm/pnuc1
  61.     The number of characters in TIB.
  62.  
  63. $  ( -- n : ddd )
  64.         Compiler          Base/zBase
  65.     Compiles the following characters in the input stream as a hex number.
  66.  
  67. $=  ( addr1 len1 addr2 len2 -- result )
  68.         Strings          String/pString
  69.     Compares string1 to string2, both given as the address of the first 
  70.     byte (addr) and the number of bytes to compare (len). Essentially used 
  71.     to do alphabetical sorts with a being less than b and so forth, but 
  72.     note that a (ascii 97) still is "less than" B (ascii 66). Although A 
  73.     will be less than a. Result = -1 if string1 is less than string2, = 0 
  74.     if strings are equal, = 1 if string 1 is greater than string2. 
  75.     Implemented with a Toolbox call to IUMagString. See IM for complete 
  76.     detail. Also, see CMPSTR - it is faster.
  77.  
  78. &  ( -- n  : char )
  79.         Strings          Base/zBase
  80.     Returns the ascii value of the next char in the input stream. Same as 
  81.     ascii.
  82.  
  83. '  ( -- xt  : word )
  84.         Compiler          Nuc2.asm
  85.     Looks up the dictionary for the next word in the input stream, and 
  86.     returns the corresponding xt.
  87.  
  88. 'TYPE  ( -- 4bytestring  :  XXXX )
  89.         Resources          Base/zBase
  90.     Given 4 ascii characters in the input stream, a 4bytestring will be 
  91.     left on the stack. This data type is also known as a PACKED ARRAY[1..4] 
  92.     OF CHAR; in Pascal.
  93.  
  94. (  ( -- )
  95.         Compiler          Nuc2.asm/pnuc2
  96.     Left paren. Denotes the beginning of a comment. At least one space must 
  97.     follow. End comment with a right paren ).
  98.  
  99. (*  ( -- )
  100.         Compiler          Base/zBase
  101.     (* ... *) defines a multi-line comment, which can be nested.
  102.  
  103. (COL)  ( --  : name )
  104.         OOP          Struct/pStruct
  105.     A standard class. Collections are ordered lists with a current size. We 
  106.     implement them by multiply inheriting the generic (COL) class with the 
  107.     array class of the appropriate width. We use a few tricks to avoid late 
  108.     binding to self in loops.
  109.  
  110. (COMP)  ( xt -- )
  111.         Compiler          Nuc2.asm/pnuc4
  112.     Compiles the word with the given xt. All compilation should be done via 
  113.     this word or (COMPN), since fooling the code generator by bypassing it 
  114.     probably isn't a good idea. This word assumes a zero opcode is to be 
  115.     passed to the generator. If not, use (COMPN).
  116.  
  117. (COMPN)  ( xt n -- )
  118.         Compiler          Nuc2.asm/pnuc4
  119.     Is similar to (COMP), but has an additional parameter n which is the 
  120.     opcode for -> ++> etc.
  121.  
  122. (EMIT)  ( c -- )
  123.         Console          Nuc2.asm/pnuc2
  124.     Prints a character on the screen only.
  125.  
  126. (FIND)  ( string-addr lfa -- xt flag | -- string-addr false )
  127.         Compiler          Nuc2.asm/pnuc4
  128.     The word that does the main work of looking up the dictionary for FIND. 
  129.     lfa points to the CONTEXT entry where the search is to start.
  130.  
  131. (FINDM)  ( hash class link-offs -- offs xt true | -- false )
  132.         OOPprimitive          Nuc2.asm/pnuc4
  133.     The lowest-level primitive to search for a method or ivar, by going 
  134.     through the linked list of methods/ivars looking for a match on the 
  135.     given selector. Link-offs is the offset from the xt of the class, of 
  136.     the first link in the search chain. The returned result offs is only 
  137.     used for ivars, and relates to multiple inheritance. It is the offset 
  138.     of the first of the ivars of the class in which the found ivar is 
  139.     declared, within the actual class being searched.
  140.  
  141. (FORGET)  ( lfa -- )
  142.         Compiler          Nuc2.asm/pnuc3
  143.     Forgets down to the given lfa. For other comments, see FORGET.
  144.  
  145. (HEADER)  ( -- )
  146.         Compiler          Nuc2.asm
  147.     (68k only) Default for HEADER. Creates a dictionary header using the 
  148.     next word in the input stream.
  149.  
  150. (KEY!)  ( -- )
  151.         Events          Event
  152.     (68k only) Sets the default action for vect key by storing the xt of 
  153.     (key) in it.
  154.  
  155. (KEY)  ( -- c )
  156.         Events          Event
  157.     (68k only) The default action for key. c is the character corresponding 
  158.     to the key that was pressed. : (key) key: fevent drop $ FF and ;
  159.  
  160. (PAUSE)  ( -- )
  161.         Events          Frontend/zFrontend
  162.     Our standard action for the vect pause.
  163.  
  164. (TYPE)  ( addr len -- )
  165.         Console          Nuc2.asm/pnuc2
  166.     Prints the given text to the screen.
  167.  
  168. )  ( -- )
  169.         Compiler          Base/zBase
  170.     Right paren. Denotes the end of a comment that was begun by ( .
  171.  
  172. *  ( n1 n2 -- n1*n2 )
  173.         Arithmetic          Nuc2.asm/pnuc1
  174.     Multiply.
  175.  
  176. *)  ( -- )
  177.         Compiler          Base/zBase
  178.     (* ... *) defines a multi-line comment, which can be nested.
  179.  
  180. **  ( obj selid -- )
  181.         OOP          Class/zClass
  182.     Late binds whatever is on the stack to the given method. e.g. obj get: 
  183.     ** . You must be sure that obj really does point to an object.
  184.  
  185. **N  ( r n -- r**n )
  186.         FloatingPoint          floating point
  187.     (68k Mops only) Integer exponentiation. Note this operation ignores the 
  188.     high-order 16 bits of n.
  189.  
  190. */  ( n1 n2 n3 --  (n1*n2)/n3 )
  191.         Arithmetic          Nuc2.asm/pnuc1
  192.     Multiplies the two signed integers n1 and n2, then divides the double 
  193.     number product by the signed number n3, leaving a signed quotient.
  194.  
  195. */MOD  ( n1 n2 n3 --  rem  (n1*n2)/n3 )
  196.         Arithmetic          Nuc2.asm/pnuc1
  197.     Same as */ except also leaves the remainder of the division.
  198.  
  199. *>  ( f --  : word )
  200.         Arithmetic           Args
  201.     (68k Mops only) A floating point prefix operator. Multiplies by f. Use 
  202.     for fvalues, local fvariables, named input parameters. Not for ints.
  203.  
  204. *W  ( n1 n2 -- n1*n2 )
  205.         Arithmetic          Nuc2.asm/pnuc1
  206.     Faster than * on a 68000 if you know that the operands are in the range 
  207.     -32768 to +32767. In PowerMops, this is the same as *.
  208.  
  209. +  ( n1 n2 -- n1+n2 )
  210.         Arithmetic          Nuc2.asm/pnuc1
  211.     Add.
  212.  
  213. +!  ( n addr -- )
  214.         Memory          Nuc2.asm/pnuc1
  215.     Adds n to the longword at address.
  216.  
  217. ++>  ( n --  : word )
  218.         Arithmetic           Args/zArgs
  219.     A prefix operator, which adds n. Use for values and named parameters 
  220.     and locals. Also works for floats.
  221.  
  222. +-  ( n1 n2 -- n3 )
  223.         Arithmetic          Nuc2.asm/pnuc1
  224.     Negates n1 if n2 is negative.
  225.  
  226. +>  ( n --  : word )
  227.         Arithmetic           Args/zArgs
  228.     A prefix operator which adds n. Use for values and named parameters and 
  229.     locals. Also works for floats.
  230.  
  231. +CURS  ( -- )
  232.         Console          Nuc2.asm/pnuc2
  233.     Turns on display of the cursor on the screen.
  234.  
  235. +ECHO  ( -- )
  236.         Console          Nuc2.asm/pnuc2
  237.     Turns on echoing to the screen of source files being loaded from disk. 
  238.     You may want to use +echo when loading a newly created source file to 
  239.     help spot any code snagging compilation. Echo is toggled by the 
  240.     keyboard short cut: Command-O
  241.  
  242. +LOOP  ( n -- )
  243.         ControlStructures          Nuc2.asm/qpCond
  244.     Marks end of DO ...+LOOP structure. Like LOOP except will increment i 
  245.     by n.
  246.  
  247. ,  ( n -- )
  248.         Compiler          Nuc2.asm/pnuc3
  249.     Compiles 4-byte n into the next available dictionary.
  250.  
  251. ,  ( n -- )
  252.         Compiler          Nuc2.asm/pnuc3
  253.     Stores n in the dictionary where DP points, and adds 4 to DP.
  254.  
  255. ,"  ( -- )
  256.         Lowstrings          Nuc2.asm/pnuc2
  257.     Add text till " to the dictionary.
  258.  
  259. ,"STR"  ( -- )
  260.         Lowstrings          Nuc2.asm/pnuc2
  261.     Adds text delimited by " at the start and end.
  262.  
  263. ,DLM-STR  ( c -- )
  264.         Lowstrings          Nuc2.asm/pnuc2
  265.     Scans the source for a string delimited at the start and end by c, then 
  266.     adds it to the dictionary.
  267.  
  268. ,EXEC  ( xt n -- )
  269.         Compiler          Args/zArgs
  270.     State-smart execute. If used within a program definition, compiles the 
  271.     xt as a call to be executed at runtime; otherwise executes it 
  272.     immediately. This is not an immediate word. It is useful in building 
  273.     compiler words which conditionally compile other words.
  274.  
  275. ,STR  ( c -- )
  276.         Lowstrings          Nuc2.asm/pnuc2
  277.     c is delimiter. Adds the following text until delimiter to the 
  278.     dictionary as a counted string (in PowerMops, it goes to the data area).
  279.  
  280. -  ( n1 n2 -- n1-n2 )
  281.         Arithmetic          Nuc2.asm/pnuc1
  282.     Subtract.
  283.  
  284. -!  ( n addr -- )
  285.         Memory          Nuc2.asm/pnuc1
  286.     Subtracts n from the longword at address.
  287.  
  288. -->  ( n --  : word )
  289.         Arithmetic           Args/zArgs
  290.     A prefix operator which subtracts n. Use for values and named 
  291.     parameters and locals. Also works for floats.
  292.  
  293. ->  ( n --  :  word )
  294.         Memory          Args/zArgs
  295.     Gazinta. A prefix operator. Stores n in values, named parameters and 
  296.     locals and vects.
  297.  
  298. -CURS  ( -- )
  299.         Console          Nuc2.asm/pnuc2
  300.     Turns off display of the cursor on the screen.
  301.  
  302. -ECHO  ( -- )
  303.         Console          Nuc2.asm/pnuc2
  304.     Turns off echoing to the screen of source files being loaded from disk. 
  305.     Echo is toggled by the keyboard short cut: Command-O
  306.  
  307. -MODELESS  ( -- )
  308.         Events          Objinit/zObjinit
  309.     Sets normal event handling - no modeless dialogs, by storing the 
  310.     appropriate 23 event handlers in the event object fevent.
  311.  
  312. -ROT  ( n2 n3 n1 -- n1 n2 n3 )
  313.         Stack          Nuc2.asm/pnuc1
  314.     Reverse of rot. Also called DOWN.
  315.  
  316. .  ( n -- )
  317.         Console          Nuc2.asm/pnuc2
  318.     Displays a number, followed by one space.
  319.  
  320. ."  ( --  : <chars>" )
  321.         Lowstrings          Nuc2.asm/pnuc2
  322.     Prints to the console text delimited by ".
  323.  
  324. .(  ( -- )
  325.         Lowstrings          Nuc2.asm/pnuc2
  326.     Prints out text till ). Immediate word.
  327.  
  328. .CLASS:  ( -- )
  329.         OOP          Class/zClass
  330.     A method. Prints the name of the class of the given object.
  331.  
  332. .CURS  ( -- )
  333.         System          Nuc2.asm/pnuc2
  334.     Draws the cursor in the Mops console window.
  335.  
  336. .ERR  ( -- )
  337.         Errors          Nuc2.asm/pnuc2
  338.     Displays the error info saved by SAVE_ERR. The value .stkLimit gives a 
  339.     maximum of stack cells dumped -- this can be used to keep info from 
  340.     scrolling off the screen. This word can be typed after an error to 
  341.     repeat the last error dump but with all the data and return stack cells 
  342.     dumped.
  343.  
  344. .H  ( n -- )
  345.         Console          Base/pnuc2
  346.     Displays number in hex.
  347.  
  348. .ID  ( ?xt -- )
  349.         Compiler          Nuc2.asm/pnuc4
  350.     If ?xt looks like an xt with a name, prints the name. If it looks like 
  351.     a xt without a name, prints "(no name)". Otherwise doesn't print 
  352.     anything.
  353.  
  354. .ID:  ( -- )
  355.         OOP          Class/zClass
  356.     A method. Prints the name of the given object, if it has a name.
  357.  
  358. .R  ( n1 n2 -- )
  359.         Console          Nuc2.asm/pnuc2
  360.     Prints n1 using the current number base, right-justified in a field n2 
  361.     characters wide. The entire number is printed even if it exceeds field 
  362.     width.
  363.  
  364. .RSTR  ( --  : lit )
  365.         Errors          Base/zBase
  366.     Displays given string number (a literal) from the mops.rsrc file, 
  367.     preceded by "Msg# ..."
  368.  
  369. .S  ( -- )
  370.         Stack          Nuc2.asm/pnuc4
  371.     Non-destructively prints the contents of the two stacks in decimal and 
  372.     hexadecimal. If words on the return stack look like return addresses or 
  373.     object addresses, we print the appropriate name as well.
  374.  
  375. /  ( n1 n2 -- n1/n2 )
  376.         Arithmetic          Nuc2.asm/pnuc1
  377.     Signed divide.
  378.  
  379. //  ( --  : filename )
  380.         System          Files/pFiles
  381.     Nesting loader. Usage: // filename
  382.  
  383. />  ( f --  : word )
  384.         Arithmetic           Args
  385.     (68k Mops only) A floating point prefix operator. Divides by f. Use for 
  386.     fvalues, local fvariables, named input parameters. Not for ints.
  387.  
  388. /MOD  ( n1 n2 -- rem n1/n2 )
  389.         Arithmetic          Nuc2.asm/pnuc1
  390.     Divides n1 by n2 leaving the remainder under the signed quotient.
  391.  
  392. /MODW  ( n1 n2 -- rem n1/n2 )
  393.         Arithmetic          Nuc2.asm
  394.     (68k only) Faster version of /mod on a 68000 if you know that the 
  395.     operands are in the range -32768 to +32767.
  396.  
  397. /STRING  ( addr len n -- addr' len' )
  398.         Lowstrings          Nuc2.asm/pnuc2
  399.     Updates the string descriptor (addr len) by n bytes. Adds n to addr, 
  400.     and subtracts it from len. n may be negative.
  401.  
  402. 0,  ( -- )
  403.         Compiler          Base/zBase
  404.     Compiles an empty cell.
  405.  
  406. 0<  ( n -- b )
  407.         Arithmetic          Nuc2.asm/pnuc1
  408.     less than zero
  409.  
  410. 0<=  ( n -- b )
  411.         Arithmetic          Nuc2.asm/pnuc1
  412.     less than or equal to zero
  413.  
  414. 0<>  ( n -- b )
  415.         Arithmetic          Nuc2.asm/pnuc1
  416.     not equal to zero
  417.  
  418. 0=  ( n -- b )
  419.         Arithmetic          Nuc2.asm/pnuc1
  420.     equal to zero
  421.  
  422. 0>  ( n -- b )
  423.         Arithmetic          Nuc2.asm/pnuc1
  424.     greater than zero
  425.  
  426. 0>=  ( n -- b )
  427.         Arithmetic          Nuc2.asm/pnuc1
  428.     greater than or equal to zero
  429.  
  430. 0DUP  ( 0 -- 0 0  | n -- n )
  431.         Stack          Nuc2.asm/pnuc1
  432.     Duplicates only if zero.
  433.  
  434. 0EXIT  ( ? -- )
  435.         ControlStructures          Nuc2.asm/pnuc1
  436.     Equivalent to NIF EXIT THEN.
  437.  
  438. 1+  ( n -- n+1 )
  439.         Arithmetic          Base/zBase
  440.     
  441.  
  442. 1-  ( n -- n-1 )
  443.         Arithmetic          Base/zBase
  444.     
  445.  
  446. 1/F  ( PPC/ ( -- ) ( F: r1 -- r2 ) )
  447.         FloatingPoint          zFloating point
  448.     (PowerMops only) Floating reciprocal.
  449.  
  450. 1/X  ( r1 -- r2 )
  451.         FloatingPoint          floating point
  452.     (68k Mops only) Floating reciprocal.
  453.  
  454. 16bits?  ( n signed? -- n b )
  455.         Compiler          Nuc2.asm/pnuc3
  456.     Returns true if n will fit in 16 bits (signed or unsigned as requested).
  457.  
  458. 1CELL  ( -- 4 )
  459.         Compiler          Base/zBase
  460.     Returns the size of a cell in bytes. Currently always 4.
  461.  
  462. 2*  ( n -- 2*n )
  463.         arithmetic          Base/pnuc1
  464.     
  465.  
  466. 2+  ( n -- n+2 )
  467.         Arithmetic          Base/zBase
  468.     
  469.  
  470. 2-  ( n -- n-2 )
  471.         Arithmetic          Base/zBase
  472.     
  473.  
  474. 2/  ( n -- n/2 )
  475.         arithmetic          Base/pnuc1
  476.     
  477.  
  478. 2DROP  ( n1 n2 -- )
  479.         Stack          Nuc2.asm/pnuc1
  480.     
  481.  
  482. 2DUP  ( n1 n2 -- n1 n2 n1 n2 )
  483.         Stack          Nuc2.asm/pnuc1
  484.     
  485.  
  486. 2SWAP  ( n1 n2 n3 n4 -- n3 n4 n1 n2 )
  487.         Stack          Nuc2.asm/pnuc1
  488.     Swaps the top two pairs of stack cells.
  489.  
  490. 3+  ( n -- n+3 )
  491.         Arithmetic          Base/zBase
  492.     
  493.  
  494. 3-  ( n -- n-3 )
  495.         Arithmetic          Base/zBase
  496.     
  497.  
  498. 4*  ( n -- 4*n )
  499.         arithmetic          Base/pnuc1
  500.     
  501.  
  502. 4+  ( n -- n+4 )
  503.         Arithmetic          Base/zBase
  504.     
  505.  
  506. 4-  ( n -- n-4 )
  507.         Arithmetic          Base/zBase
  508.     
  509.  
  510. 4/  ( n -- n/4 )
  511.         arithmetic          Base/pnuc1
  512.     
  513.  
  514. :  ( --  : name )
  515.         Compiler          Nuc2.asm/cg5
  516.     Creates a dictionary entry for the next word in the input stream.
  517.  
  518. : NUM?  ( addr len -- n true | -- n-lo n-hi true | -- false )
  519.         compiler          Nuc2.asm/pnuc2
  520.     Attempts to convert the string ( addr len ) to a number. An initial 
  521.     sign may be present. The value DPL is initially set to -1, and if a "." 
  522.     appears in the string, DPL is set to the (zero-based) index of the "." 
  523.     in the string. If the whole string is converted, the number and true is 
  524.     returned, and if DPL was set non-negative, the number is returned as 
  525.     double-length. If the string isn't all converted, we assume there is a 
  526.     bad character in the number and return false.
  527.  
  528. :A  ( --  : name )
  529.         Compiler          Nuc2.asm/zBase
  530.     For defining action handlers that cross module bounds. If a class is 
  531.     defined in module1, but instantiated in module2 with action handlers in 
  532.     module2, define handlers with :a ... ;a.
  533.  
  534. :CLASS  ( --  : name )
  535.         OOP          Class/zClass
  536.     Begins definition of a new class. One or more classnames can be 
  537.     designated as superclass(es). There are optional parameters that may 
  538.     also be declared after the superclass list, including n INDEXED, LARGE, 
  539.     and GENERAL.
  540.  
  541. :CODE  ( --  : name )
  542.         Assembler          
  543.     (68k Mops only) The analog of : for assembler definitions.
  544.  
  545. :F  ( --  : name )
  546.         Compiler          Base/qpCond
  547.     Begins compilation of a word which was previously forward-referenced. 
  548.     :f creates a headerless entry for the word and then patches the 
  549.     previous entry to point to the newly compiled definition. 
  550.     Forward-referencing is useful when a word is to be used before it can 
  551.     be defined. You end the compilation with ;f.
  552.  
  553. :LOC  ( --  : name )
  554.         Compiler          Args/zArgs
  555.     Commences the definition of the "main" word of a local section. The { 
  556.     ... } syntax is not used here, as it has already been done at LOCAL.
  557.  
  558. :M  ( --  : name: )
  559.         OOP          Class/zClass
  560.     Begins definition of a method within a class. Note that name: MUST end 
  561.     with a colon (:).
  562.  
  563. :MCODE  ( --  : name: )
  564.         Assembler          
  565.     (68k Mops only) The analog of :m for assembler definitions.
  566.  
  567. :MLOC  ( --  : name )
  568.         Memory          Args
  569.     Commences the definition of the "main" method of a local section within 
  570.     a class definition.
  571.  
  572. :NONAME  ( -- xt 300 )
  573.         Compiler          Base/cg5
  574.     Begins a colon definition with no name, and returns the xt of the 
  575.     definition so that it can be called. The ANSI Standard defines the 
  576.     stack effect as: (C: -- colon-sys ) (S: -- xt ) In Mops we implement 
  577.     the control-flow stack on the data stack, which the Standard allows, 
  578.     specifying that the control-flow stack items go above the data stack 
  579.     items. In this word, "colon-sys" is just a security marker (300), so we 
  580.     return this on top of the xt.
  581.  
  582. :PROC  ( --  : name )
  583.         Toolbox          Base
  584.     (68k Mops only) Begins compilation of a word that to the Toolbox 
  585.     behaves like a Pascal procedure or function. You can use a :proc word 
  586.     when a Toolbox routine requires a procedural argument. In PowerMops, 
  587.     use :PPC_PROC
  588.  
  589. ;  ( -- )
  590.         Compiler          Nuc2.asm/cg5
  591.     Ends a definition.
  592.  
  593. ;A  ( -- )
  594.         Compiler          Nuc2.asm
  595.     For defining action handlers that cross module bounds. If a class is 
  596.     defined in module1, but instantiated in module2 with action handlers in 
  597.     module2, define handlers with :a ... ;a.
  598.  
  599. ;CLASS  ( -- )
  600.         OOP          Class/zClass
  601.     Ends definition of a class.
  602.  
  603. ;CODE  ( -- )
  604.         Assembler          
  605.     (68k Mops only) The analog of ; for assembler definitions.
  606.  
  607. ;F  ( -- )
  608.         Compiler          Base/qpCond
  609.     Ends compilation of a word which was defined with :f. See forward.
  610.  
  611. ;LOC  ( -- )
  612.         Compiler          Args/zArgs
  613.     Ends the definition of the "main" word, and ends the local section.
  614.  
  615. ;M  ( -- )
  616.         OOP          Class/zClass
  617.     Ends definition of a method in a class.
  618.  
  619. ;MCODE  ( -- )
  620.         Assembler          
  621.     (68k Mops only) The analog of ;m for assembler definitions.
  622.  
  623. ;MLOC  ( -- )
  624.         Memory          Args
  625.     Ends the definition of the "main" method, and ends the local section.
  626.  
  627. ;PROC  ( -- )
  628.         Toolbox          Base
  629.     (68k Mops only) Ends compilation of word defined with :proc
  630.  
  631. <  ( n1 n2 -- b )
  632.         Arithmetic          Nuc2.asm/pnuc1
  633.     Comparison operator - less than.
  634.  
  635. <"  ( --  : filename )
  636.         Files          Nuc2.asm
  637.     (68k Mops only) This is the primitive loader. Use this when rebuilding 
  638.     Mops from below "Files" which contains the definition for //. Note that 
  639.     -<" is a bit faster since the files are not echoed to display.
  640.  
  641. <#  ( -- )
  642.         NumericConversion          Nuc2.asm/pnuc2
  643.     Initializes numeric conversion. standard
  644.  
  645. <<  ( n1 n2 -- n3 )
  646.         Arithmetic          Nuc2.asm/pnuc1
  647.     Shifts n1 to the left by n2 bit positions. e.g. 3 2 << will yield 12 
  648.     (0011) -> (1100).
  649.  
  650. <=  ( n1 n2 -- b )
  651.         Arithmetic          Nuc2.asm/pnuc1
  652.     less than or equal
  653.  
  654. <>  ( n1 n2 -- b )
  655.         Arithmetic          Nuc2.asm/pnuc1
  656.     not equal, perhaps we could use ≠ ?
  657.  
  658. <BUILDS  ( --  :  name )
  659.         Compiler          Nuc2.asm/qpCreate
  660.     We retain <BUILDS to be used in conjunction with DOES> rather than 
  661.     following the standard and using CREATE. This is because CREATEd words 
  662.     have the data right at the xt, while DOES> words have to have a pointer 
  663.     to the DOES> code. So rather than waste space in CREATEd words or do a 
  664.     complicated kludge during compilation, we use <BUILDS.
  665.  
  666. <findM>  ( selID ^class -- xt offs xdispl-offs )
  667.         OOPprimitive          Class/qpClass
  668.     Factored out from clFndm and objFindm. Finds a method's xt given a 
  669.     selID and a class address, which has already been converted to a module 
  670.     addr if necessary. offs will be nonzero if the method turns out to 
  671.     belong to a superclass with a non-zero offset in the object - i.e. an 
  672.     embedded object. If it's a large_obj_array, and the object is in the 
  673.     indexed area, xdispl-offs will be nonzero. This allows the caller to 
  674.     compile code to add the offset to the selected element.
  675.  
  676. =  ( n1 n2 -- b )
  677.         Arithmetic          Nuc2.asm/pnuc1
  678.     Comparison operator - equals.
  679.  
  680. >  ( n1 n2 -- b )
  681.         Arithmetic          Nuc2.asm/pnuc1
  682.     Comparison operator - greater than.
  683.  
  684. >=  ( n1 n2 -- b )
  685.         Arithmetic          Nuc2.asm/pnuc1
  686.     greater than or equal
  687.  
  688. >>  ( n1 n2 -- n2 )
  689.         Arithmetic          Nuc2.asm/pnuc1
  690.     Shifts n1 to the right by n2 bit positions. e.g. 12 2 >> will yield 3 
  691.     (1100) -> (0011).
  692.  
  693. >BODY  ( cfa/xt -- dfa )
  694.         compiler          Nuc2.asm/pnuc1
  695.     Converts a code field address (same as an xt) to a data address. In 
  696.     PowerMops it has to go to the data area. This isn't (and can't ever be) 
  697.     standard, since these kinds of words don't have an 'xt' under the 
  698.     standard. But in Mops, you can tick them, and use >BODY on the result 
  699.     to get to the data.
  700.  
  701. >CLASS  ( obj -- ^class | -- 0 )
  702.         OOPprimitive          Nuc2.asm/pnuc4
  703.     Converts an object address to its class address. Returns zero if the 
  704.     passed-in address isn't an object address. Needs to work for heap as 
  705.     well as dictionary objects. The test is very unlikely (maybe 1/2**24) 
  706.     to indicate a non-object as being an object. To save time we don't do a 
  707.     conservative check on obj actually being a legal address (unlike 
  708.     aligned_addr?), apart from checking that it is aligned, which is a very 
  709.     quick check. This means we may crash if an aligned but illegal address 
  710.     is passed in. The presumption is that it really is an object address, 
  711.     and that anything else is an (unlikely) error.
  712.  
  713. >Classxt  ( obj -- class | -- 0 )
  714.         Compiler          Nuc2.asm/pnuc4
  715.     As for >CLASS, but if the class is exported from a module and you are 
  716.     executing in the main dictionary, it gives the xt of the imported word, 
  717.     without accessing the module. This can be useful if you just want to 
  718.     identify a class without needing all the class info. If you are 
  719.     executing in the module, however, you will get the xt of the class in 
  720.     the module. The general rule is that the returned xt will always be the 
  721.     same as if you had just ticked the classname, wherever you are 
  722.     executing.
  723.  
  724. >FLOAT  ( n -- r )
  725.         FloatingPoint          Nuc2.asm
  726.     (68k Mops only) Converts the integer to a float.
  727.  
  728. >HDLR  ( cfa/xt -- ^hndlr )
  729.         compiler          Nuc2.asm/pnuc1
  730.     Converts a code field address (same as an xt) to a handler field 
  731.     address.
  732.  
  733. >IN  ( -- n )
  734.         compiler          Nuc2.asm/pnuc1
  735.     The current offset into TIB.
  736.  
  737. >LINK  ( cfa/xt -- lfa )
  738.         compiler          Nuc2.asm/pnuc1
  739.     Converts a code field address (same as an xt) to a link field address.
  740.  
  741. >NAME  ( xt -- nfa )
  742.         Compiler          Nuc2.asm/pnuc1
  743.     Returns the name field address (nfa) for the given xt.
  744.  
  745. >NAME  ( cfa/xt -- nfa )
  746.         compiler          Nuc2.asm/pnuc1
  747.     Converts a code field address (same as an xt) to a name field address.
  748.  
  749. >NUMBER  ( ud addr len -- ud' addr' len' )
  750.         compiler          Nuc2.asm/pnuc2
  751.     Converts the characters within the string specified by ( addr len ) to 
  752.     digits, and accumulates the result into a double number whose initial 
  753.     value is ud. Conversion continues left-to-right until a non-convertible 
  754.     character is encountered or the string is exhausted. The unconverted 
  755.     part of the string is given by ( addr' len' ). If the whole string was 
  756.     converted, addr' is the address of the first character past the end of 
  757.     the string, and len' is zero. Characters "+" and "-" are taken as 
  758.     unconvertible.
  759.  
  760. >OBJ  ( xt -- addr )
  761.         OOPprimitive          Class/qpClass
  762.     xt results from ticking an object, or the equivalent (ticking an object 
  763.     isn't really legal). Returns the object's data address. On the 68k this 
  764.     is just 8+, but in PowerMops we have to go from the code to the data 
  765.     area.
  766.  
  767. >ORIGIN  ( x y -- )
  768.         QuickDraw          Nuc2.asm/pnuc2
  769.     Calls toolbox SetOrigin.
  770.  
  771. >PTR  ( addr -- n )
  772.         Memory          Nuc2.asm/pnuc1
  773.     An alias for @.
  774.  
  775. >R  ( n -- )
  776.         ReturnStack          Nuc2.asm/qpCond
  777.     Pushes the top stack value to the return stack.
  778.  
  779. >Str255  ( addr1 len addr2 -- addr2 )
  780.         Strings          Base/pBase
  781.     Converts text beginning at addr1 for len characters to a str255 type 
  782.     string at addr2.
  783.  
  784. ?#xts  ( n1 n2 -- )
  785.         Compiler          Struct/pStruct
  786.     Used to check that the right number of stacked xts is being passed in.
  787.  
  788. ?>CLASS  ( obj -- class )
  789.         OOPprimitive          Class/qpClass
  790.     Converts the pointer to an object to a pointer to its class. Gives an 
  791.     error if not an object.
  792.  
  793. ?>ClassInMod  ( class -- class' )
  794.         Compiler          Nuc2.asm/pnuc3
  795.     Converts a class address to the corresponding class address in a 
  796.     module, if the class is exported, and holds the module. If the class 
  797.     isn't exported, does nothing.
  798.  
  799. ?CLASS  ( -- )
  800.         OOPprimitive          Class/qpClass
  801.     Error if not compiling a class definition.
  802.  
  803. ?COMP  ( -- )
  804.         Errors          Nuc2.asm/pnuc3
  805.     Prints message: "compilation only" if not compiling, that is, if state 
  806.     is not zero
  807.  
  808. ?DEFN  ( n1 n2 -- )
  809.         Errors          Nuc2.asm/pnuc3
  810.     Prints message: "unpaired conditionals" if n1 does not equal n2. 
  811.     Message indicates that compiled conditionals do not match, such as an 
  812.     IF without a THEN.
  813.  
  814. ?DO  ( end beg -- )
  815.         ControlStructures          Nuc2.asm/qpCond
  816.     Marks beginning of ?DO ... LOOP sequence. Will not execute even once if 
  817.     end ≤ beg. See DO.
  818.  
  819. ?DUP  ( n -- n n | 0 -- 0 )
  820.         Stack          Nuc2.asm/cg6
  821.     Duplicates only if non-zero.
  822.  
  823. ?ERROR  ( b --  : lit )
  824.         Errors          Base/zBase
  825.     If b is true, aborts and displays given string number (a literal) from 
  826.     the mops.rsrc file.
  827.  
  828. ?EXEC  ( -- )
  829.         Errors          Nuc2.asm/pnuc3
  830.     Issues an error message if not in interpret state.
  831.  
  832. ?EXIT  ( ? -- )
  833.         ControlStructures          Nuc2.asm/cg5
  834.     Equivalent to IF EXIT THEN.
  835.  
  836. ?PAIRS  ( n1  n2 -- )
  837.         Errors          Nuc2.asm/pnuc3
  838.     Prints message: "unpaired conditionals" if n1 does not equal n2. 
  839.     Message indicates that compiled conditionals do not match, such as an 
  840.     IF without a THEN.
  841.  
  842. ?PAUSE  ( -- )
  843.         Events          Nuc.asm/pnuc1
  844.     
  845.  
  846. ?RDEPTH  ( -- )
  847.         Errors          Base/zBase
  848.     Prints message: "Return Stack Overflow" and executes an abort if the 
  849.     return stack is too close to its maximum depth.
  850.  
  851. ?RTNAEPMISSED  ( w:xx rc -- w:rc' )
  852.         Events          Nuc2.asm
  853.     This can be called after calling GotParms? to convert the return code 
  854.     from that word to the appropriate return code to return to the caller 
  855.     of the handler. If GotParms? returns false, that means we missed a 
  856.     parm, so we return -1715. If GotParms? returned anything non-zero, that 
  857.     means we got all the parms, so we return zero.
  858.  
  859. ?STACK  ( -- )
  860.         Errors          Nuc2.asm/pnuc3
  861.     Prints message: "empty stack" and executes an abort if underflow has 
  862.     occurred on the parameter stack. Underflow may occur if a word or 
  863.     method expects more parameters than are provided.
  864.  
  865. ?TERMINAL  ( -- b )
  866.         Events          Nuc2.asm/pnuc2
  867.     Performs a 40 ?Event. Synonym for KEY?. Used in class Mouse, and in the 
  868.     utility word ?pause to test for a keyboard event.
  869.  
  870. @  ( addr -- n )
  871.         Memory          Nuc2.asm/pnuc1
  872.     Fetches 32-bit value at address.
  873.  
  874. @ABS  ( addr -- abs-addr )
  875.         Compiler          Nuc2.asm/setup
  876.     addr is the address of a relocatable address (i.e. where the 
  877.     relocatable address itself is located, not where it points to). Fetches 
  878.     this address and converts it to absolute. Gives an error if it isn't a 
  879.     valid relocatable address.
  880.  
  881. @VAL  ( -- )
  882.         Compiler          Base/zBase
  883.     Compiles a number from input stream.
  884.  
  885. @WORD  ( -- addr )
  886.         Compiler          Base/zBase
  887.     Retrieves next blank-delimited word from input stream.
  888.  
  889. @XY  ( -- x y )
  890.         QuickDraw          Nuc2.asm/pnuc2
  891.     Via a toolbox call to GetPen, leaves the x and y coordinate of the 
  892.     graphics pen.
  893.  
  894. a>>  ( n1 n2 -- n2 )
  895.         arithmetic          Nuc2.asm/pnuc1
  896.     Shifts n1 right by n2 bit positions, arithmetically (i.e. with sign 
  897.     exdtension).
  898.  
  899. ABORT  ( -- )
  900.         Errors          Nuc2.asm/pnuc3
  901.     standard
  902.  
  903. ABORT"  ( b --   : <string>" )
  904.         Errors          Nuc2.asm/zBase
  905.     Prints the text string and executes an abort, if the boolean is true. 
  906.     Useful in debugging and error reporting. Can only be used in a 
  907.     definition.
  908.  
  909. ABORTVEC  ( -- )
  910.         System          Nuc.asm/pnuc1
  911.     A system vector. Contains cl3, defined in file Objinit.
  912.  
  913. ABOUTVEC  ( -- )
  914.         Menus          Frontend/zFrontend
  915.     The first action handler for our AppleMenu object, since it is a vect 
  916.     we can reuse in an application.
  917.  
  918. ABS  ( n -- |n| )
  919.         Arithmetic          Nuc2.asm/pnuc1
  920.     Absolute value.
  921.  
  922. ABS>  ( --  : word )
  923.         Arithmetic           Args
  924.     (68k Mops only) A floating point prefix operator. Changes to absolute 
  925.     value. Use for fvalues, local fvariables, named input parameters. Not 
  926.     for ints.
  927.  
  928. ACCEPT  ( addr cnt -- #chars )
  929.         Console          Nuc2.asm/pnuc2
  930.     Transfers characters from the keyboard to memory starting at addr until 
  931.     a return is received or cnt characters have been input. Returns the 
  932.     number of characters read (not counting the final return, if any). 
  933.     Characters are echoed to the primary and secondary devices by executing 
  934.     the system vector echovec. When Mops starts up, echovec is vectored to 
  935.     (emit), so that characters are echoed to the screen only.
  936.  
  937. ACTV-EVT  ( -- false )
  938.         Events          Event
  939.     An action word for fevent. Handles activate and deactivate events by 
  940.     sending a late bound enable:and disable: messages to the current window 
  941.     (but only if it is an application window).
  942.  
  943. ACTW  ( -- wptr | 0 )
  944.         Events          Window/pnuc1
  945.     A value. Indentifies any active Mops window which should be idled. Will 
  946.     be set zero if we have, say, a dialog as the front window, but NOT if 
  947.     we're switched into the background.
  948.  
  949. ADDR:  ( -- ^base )
  950.         OOP          Class/zClass
  951.     A method. Returns the address of the beginning of an object's ivars.
  952.  
  953. AEErrorVec  ( -- )
  954.         Events          Event
  955.     A vect. Called when an AppleEvent handler returns. Default is (AEerr).
  956.  
  957. AEhandler  ( ^AE ^AEReply RefCon -- )
  958.         Events          Nuc2.asm
  959.     Put at the start of an AppleEvent handler proc. Pops the parms into the 
  960.     appropriate locations.
  961.  
  962. AGAIN  ( -- )
  963.         ControlStructures          Nuc2.asm/qpCond
  964.     Standard. Marks bounds of BEGIN ... AGAIN loop.
  965.  
  966. ALIGN  ( -- )
  967.         Compiler          Nuc2.asm/pnuc3
  968.     If the DP is odd, adds one to it.
  969.  
  970. ALIGN  ( -- )
  971.         Compiler          Nuc2.asm/pnuc3
  972.     Aligns DP to a 4-byte boundary. Any bytes skipped are cleared. Older 
  973.     synonym for align4.
  974.  
  975. ALIGN-DP  ( -- )
  976.         Compiler          Nuc2.asm/pnuc3
  977.     Same as ALIGN.
  978.  
  979. ALIGN-DP  ( -- )
  980.         Compiler          Nuc2.asm/pnuc3
  981.     Aligns DP to a 4-byte boundary. Any bytes skipped are cleared. Older 
  982.     synonym for align4.
  983.  
  984. ALIGN4  ( -- )
  985.         Compiler          Nuc2.asm/pnuc3
  986.     Aligns DP to a 4-byte boundary. Any bytes skipped are cleared.
  987.  
  988. ALIGN8  ( -- )
  989.         Compiler          Nuc2.asm/pnuc3
  990.     Aligns DP to an 8-byte boundary. Any bytes skipped are cleared.
  991.  
  992. ALIGNED  ( addr -- even-addr )
  993.         Memory          Nuc2.asm/pnuc3
  994.     Increments addr by one if it is odd, leaving the next address. You can 
  995.     use align to make sure the 68000 will not try to access memory 
  996.     beginning at an odd address, which can cause a fatal error.
  997.  
  998. ALIGNED  ( n -- n' )
  999.         Compiler          Nuc2.asm/pnuc3
  1000.     Applies the default alignment to n - rounds it up to be a multiple of 2 
  1001.     on the 68k or 4 on the PowerPC. ANSI.
  1002.  
  1003. aligned_addr?  ( ?addr -- ?addr b )
  1004.         Compiler          Nuc2.asm/pnuc4
  1005.     Checks if ?addr could really be an aligned address. Used in stack 
  1006.     dumping when we don't know what a value is, but want to print a name if 
  1007.     there is one. We have to apply this check first so that we don't get an 
  1008.     address error.
  1009.  
  1010. ALIGNED_MOVE  ( src dest cnt -- )
  1011.         Memory          Nuc2.asm/pnuc2
  1012.     As for MOVE, but the source and destination areas must begin on 4-byte 
  1013.     aligned addresses, and the results are undefined if the areas overlap. 
  1014.     This gives better optimization possibilities.
  1015.  
  1016. ALLOT  ( n -- )
  1017.         Compiler          Nuc2.asm/pnuc1
  1018.     Allocates n bytes in the dictionary, by incrementing DP by n. In 
  1019.     PowerMops, the allocated bytes are in the data area.
  1020.  
  1021. AND  ( n1 n2 -- n3 )
  1022.         Logical          Nuc2.asm/pnuc1
  1023.     Bitwise AND.
  1024.  
  1025. AND>  ( n --  : word )
  1026.         Arithmetic           Args/zArgs
  1027.     A prefix operator, which does a bitwise AND with n. Use for values and 
  1028.     named parameters and locals. Not for floats.
  1029.  
  1030. ANTILOG  ( r1 -- r2 )
  1031.         FloatingPoint          floating point
  1032.     (68k Mops only) Antilog ( 10^x ) of x
  1033.  
  1034. AppleEvents?  ( -- b )
  1035.         Events          Nuc2.asm/pnuc1
  1036.     (68k Mopw) A value. Set True by the startup code if AppleEvents are 
  1037.     available. (PowerMops) Always returns True, as AppleEvents are always 
  1038.     available.
  1039.  
  1040. APPLEMEN  ( -- obj )
  1041.         Menus          FrontEnd/zFrontend
  1042.     The standard AppleMenu object. Need only send the getnew: message at 
  1043.     runtime to activate. Note you must copy the MENU resource #1 into an 
  1044.     installed application before this will run, otherwise bomb city.
  1045.  
  1046. APPLEMENU  ( --  : name )
  1047.         Menus          MenuMod.txt
  1048.     A standard class, subclass of menu. An applemenu facilitates standard 
  1049.     apple menu support by filling the menu with all of the desk accessories 
  1050.     when a getnew: message is sent. The Mops applemenu object is applemen.
  1051.  
  1052. APPWIND?  ( -- b )
  1053.         Events          Event
  1054.     True if this is an application window. This check is necessary for 
  1055.     non-multifinder systems while calling WaitNextEvent.
  1056.  
  1057. ARCTAN  ( r1 -- r2 )
  1058.         FloatingPoint          floating point
  1059.     (68k Mops only) Computes arctangent, given radians.
  1060.  
  1061. ARRAY  ( #elems --  : name )
  1062.         OOP          Struct/pStruct
  1063.     A standard class. ARRAY is the basic 4-byte cell one-dimension array. 
  1064.     Class is INDEXED.
  1065.  
  1066. ARROWCURS  ( -- )
  1067.         Quickdraw          QD
  1068.     Sets the cursor to this. Merely calls Toolbox InitCursor.
  1069.  
  1070. ASYNCH  ( -- )
  1071.         Files          Files/pFiles
  1072.     Sets value asynch? to true.
  1073.  
  1074. ASYNCH?  ( -- b )
  1075.         Files          Files/pFiles
  1076.     A value. True if performing an asynchronous i/o operation.
  1077.  
  1078. BASE  ( -- n )
  1079.         Arithmetic          Nuc2.asm/pnuc1
  1080.     This value contains the current number base used for the input and 
  1081.     output conversions.
  1082.  
  1083. BE  ( -- )
  1084.         Compiler          Base/zBase
  1085.     A primitive for implementing become.
  1086.  
  1087. BECOME  ( --  : word )
  1088.         Events           Base/zBase
  1089.     BECOME allows restarting at a given word, with all stacks empty. This 
  1090.     is necessary in menu handlers and other areas that could create 
  1091.     indefinite nesting situations.
  1092.  
  1093. becomeXT  ( --  :  word )
  1094.         Compiler          Base/zBase
  1095.     A system vect used to implement become.
  1096.  
  1097. BEEP  ( dur -- )
  1098.         Sound          Nuc2.asm/setup
  1099.     Beeps the Macintosh's speaker for dur ticks (60ths of a second).
  1100.  
  1101. BEGIN  ( -- )
  1102.         ControlStructures          Nuc2.asm
  1103.     standard. Marks the beginning of a BEGIN ... 
  1104.     (WHILE/NWHILE/UNTIL/NUNTIL/AGAIN) looping structure.
  1105.  
  1106. BIG#  ( -- $7FFFFFFF )
  1107.         System          Nuc2.asm/pnuc1
  1108.     A constant. The maximum positive number.
  1109.  
  1110. BIND_WITH  ( obj --<selector> obj-modified  xt )
  1111.         OOP          Class
  1112.     (68k Mops only) If you are late-binding in a loop, it can be much 
  1113.     faster if you do the bind just once, then reuse the resulting xt each 
  1114.     time in the loop. This way you only have to perform the method search 
  1115.     once. To bind initially and get the xt, use BIND_WITH. Usage: (savext 
  1116.     and obj-mod are values or locals). (get object's address) bind_with 
  1117.     someSelector: -> savext -> obj-mod. (in the loop) obj-mod savext 
  1118.     ex-method.
  1119.  
  1120. BL  ( -- 32 )
  1121.         Strings          Nuc2.asm/pnuc1
  1122.     A constant.
  1123.  
  1124. BLANKS  ( addr n -- )
  1125.         LowStrings          Nuc2.asm/pnuc2
  1126.     Fills memory with blanks (ascii 32) starting at addr for n bytes.
  1127.  
  1128. BOOL  ( --  : name )
  1129.         OOP          Struct/pStruct
  1130.     A standard class. Subclass of byte. Note that since the datalength of 
  1131.     aMops class bool is 1, this class should not be used to map into a 
  1132.     Toolbox record of type BOOLEAN because the Pascal type boolean has a 
  1133.     length of 2 (Use the Mops class INT for a Toolbox boolean).
  1134.  
  1135. BOUNDS  ( addr cnt -- limit addr )
  1136.         Controlstructures          Nuc2.asm/pnuc1
  1137.     Equivalent to OVER + SWAP. Useful for setting up many DO loops.
  1138.  
  1139. BRESET  ( addr bit# -- )
  1140.         Memory          Nuc2.asm
  1141.     (68k only - now obsolete) Clears the bit. bit# can be >8.
  1142.  
  1143. BSET  ( addr bit# -- )
  1144.         Memory          Nuc2.asm
  1145.     (68k only - now obsolete) Sets the bit. bit# can be >8.
  1146.  
  1147. BTEST  ( addr bit# -- b )
  1148.         Memory          Nuc2.asm
  1149.     (68k only - now obsolete) Tests the bit and returns true if the bit is 
  1150.     set, false otherwise.
  1151.  
  1152. BTOGGLE  ( addr bit# -- )
  1153.         Memory          Nuc2.asm
  1154.     (68k only - now obsolete) Inverts the bit. bit# can be >8.
  1155.  
  1156. BUF255  ( -- addr )
  1157.         Strings          Base/setup
  1158.     A 256-byte buffer for str255 operations.
  1159.  
  1160. BUSY  ( -- n )
  1161.         System          Nuc2.asm
  1162.     A value. FCB of file involved in asynchronous I/O, or zero if none. Set 
  1163.     from high level, not from here. Cleared here though, by the completion 
  1164.     routine.
  1165.  
  1166. BYE  ( -- )
  1167.         System          Nuc2.asm/setup
  1168.     Returns control to the Finder via ExitToShell.
  1169.  
  1170. BYTE  ( --  : name )
  1171.         OOP          Struct/pStruct
  1172.     A standard 1-byte variable class.
  1173.  
  1174. BYTES  ( n --  : ivarname )
  1175.         OOP          Class/zClass
  1176.     Bytes is used as the ivar allocation primitive for basic classes. 
  1177.     Allocates n bytes as a named instance variable of an object. You can 
  1178.     use bytes to map a Toolbox data structure as an object when named 
  1179.     access to some of the fields is not needed (but you must know the 
  1180.     proper length).
  1181.  
  1182. C!  ( c addr -- )
  1183.         Memory          Nuc2.asm/pnuc1
  1184.     Stores given 8-bit number to byte at given address.
  1185.  
  1186. C,  ( w -- )
  1187.         Compiler          Nuc2.asm/pnuc3
  1188.     Compiles 1-byte c into the next available dictionary.
  1189.  
  1190. C,  ( c -- )
  1191.         Compiler          Nuc2.asm/pnuc3
  1192.     Stores the byte c in the dictionary where DP points, and adds 1 to DP.
  1193.  
  1194. C@  ( addr -- u )
  1195.         Memory          Nuc2.asm/pnuc1
  1196.     Fetches 8-bit value from given address, and zero-extends to 32 bits.
  1197.  
  1198. C@X  ( addr -- n )
  1199.         Memory          Nuc2.asm/pnuc1
  1200.     Fetches 8-bit value from given address, and sign-extends to 32 bits.
  1201.  
  1202. CALL  ( --  :  TrapName )
  1203.         Toolbox           tool.txt
  1204.     (68k Mops only, and now obsolescent) Used to compile a call to a 
  1205.     Macintosh Toolbox routine. Simply follow call with the name of the 
  1206.     routine. Compilation only.
  1207.  
  1208. CallFirst  ( --  : methodname: )
  1209.         OOP          Call1&Lmod.txt
  1210.     The next method definition will always execute the method indicated by 
  1211.     methodname: BEFORE it is executed by a subclass. Provides a way for 
  1212.     superclasses to limit the extent to which subclasses may override a 
  1213.     method.
  1214.  
  1215. CallLast  ( --  : methodname: )
  1216.         OOP          Call1&Lmod.txt
  1217.     The next method definition will always execute the method indicated by 
  1218.     methodname: AFTER it is executed by a subclass. Provides a way for 
  1219.     superclasses to limit the extent to which subclasses may override a 
  1220.     method.
  1221.  
  1222. CASE  ( -- )
  1223.         ControlStructures          Base/zBase
  1224.     Begins a CASE .. OF .. ENDOF ... ENDCASE structure.
  1225.  
  1226. CASE?  ( -- b )
  1227.         Strings          StrUtilities/zString
  1228.     A value. True if case to be significant in comparisons done by CMPSTR 
  1229.     and string+ objects (does not affect string objects).
  1230.  
  1231. CASE_IN_NAMES?  ( -- b )
  1232.         compiler          Nuc2.asm/pnuc1
  1233.     Normally false. True if dictionary searches are to be case-sensitive.
  1234.  
  1235. CATCH  ( xt -- n )
  1236.         Errors          Nuc2.asm/pnuc3
  1237.     Standard Forth. Executes xt and returns 0 if all is OK, or n if THROW 
  1238.     was executed with n.
  1239.  
  1240. CATCH  ( xt -- n )
  1241.         Errors          Nuc2.asm/pnuc3
  1242.     EXECUTEs the xt. If the executed word does a THROW, n is the error code 
  1243.     passed to THROW. If it doesn't do a THROW, n is zero. If it does a 
  1244.     THROW, control doesn't return to CATCH, but to whoever called CATCH. 
  1245.     See the Standard for a full description.
  1246.  
  1247. CDP  ( -- addr )
  1248.         Compiler          base/setup
  1249.     (PowerMops) A value. The address of the next available memory location 
  1250.     in the code area.
  1251.  
  1252. CELL+  ( n -- n+4 )
  1253.         Compiler          Base/zBase
  1254.     Adds the number of bytes in a cell to n. Currently in Mops this is 
  1255.     always 4.
  1256.  
  1257. CELL-  ( n -- n-4 )
  1258.         Compiler          Base/zBase
  1259.     Subracts the number of bytes in a cell from n. Currently in Mops this 
  1260.     is always 4.
  1261.  
  1262. CELLS  ( #cells -- #bytes )
  1263.         Compiler          Base/zBase
  1264.     Converts a cell count to a byte count.
  1265.  
  1266. CHAR  ( -- n  : char )
  1267.         Strings          Base/zBase
  1268.     Returns the ascii value of the next char in the input stream.
  1269.  
  1270. CHAR+  ( n -- n+1 )
  1271.         Compiler          Base/zBase
  1272.     Adds the number of bytes in a character (currently 1) to n.
  1273.  
  1274. CHARS  ( n1 -- n2 )
  1275.         Compiler          Base/zBase
  1276.     n2 is the number of bytes in n1 chars.  In the current implementation 
  1277.     these are the same, so this word is effectively a no-op.
  1278.  
  1279. CHKCLASS  ( xt -- xt )
  1280.         OOPprimitive          Class/qpClass
  1281.     Gives an error if the xt does not refer to a class.
  1282.  
  1283. CHKSAME  ( obj -- obj )
  1284.         OOP          Class/zClass
  1285.     A check that two objects are of exactly the same class. Aborts with 
  1286.     error message if not.
  1287.  
  1288. CL>LEN  ( #els class -- #els len )
  1289.         OOPprimitive          Class/qpClass
  1290.     Gets data length of object given #els and class.
  1291.  
  1292. CLASS:  ( -- class )
  1293.         OOP          Class/zClass
  1294.     A method. Returns the class pointer for an object.
  1295.  
  1296. CLASS?  ( ?xt -- ?xt b )
  1297.         OOP          Nuc2.asm/pnuc4
  1298.     Returns true if ?xt is a class xt.
  1299.  
  1300. CLASSINIT:  ( -- )
  1301.         OOP          Class/zClass
  1302.     Our standard constructor method. The default message that is ALWAYS 
  1303.     sent to an object at time of instantiation, even ivars. Note that a 
  1304.     classinit: method should not expect any stack parameters (actually, it 
  1305.     will work for dictionary objects, but it won't work for ivars, so it is 
  1306.     best not to do this).
  1307.  
  1308. CLASS_IS  ( --  : classname )
  1309.         OOP           Class/zClass
  1310.     Used with object pointers. The object pointer syntax is ObjPtr ZZZ 
  1311.     class_is someClass Thereafter, any messages sent to zzz are early-bound 
  1312.     to the object that zzz points to at the time the message executes. 
  1313.     Also, see set_to_class .
  1314.  
  1315. ClFindM  ( selID ^class -- xt offs xdispl-offs )
  1316.         OOPprimitive          Class/qpClass
  1317.     Finds a method's xt given a selID and a class address. Results are as 
  1318.     for <findM>.
  1319.  
  1320. CloseResFile  ( -- )
  1321.         Resources          Base/pBase
  1322.     Closes the resource file last opened with OpenResFile.
  1323.  
  1324. CLS  ( -- )
  1325.         Console          Nuc2.asm/pnuc2
  1326.     Clears the current window and leaves cursor in upper left corner.
  1327.  
  1328. CMOVE  ( src dest cnt -- )
  1329.         Memory          Nuc2.asm/pnuc2
  1330.     Copies cnt bytes from src address to dest address, one byte at a time, 
  1331.     going from left to right. Cnt must be between 0 and 64K. Use move for a 
  1332.     more general cnt.
  1333.  
  1334. CMPSTR  ( addr1 len1 addr2 len2 -- n )
  1335.         Strings          StrUtilities/zString
  1336.     Compares 2 strings. Case is significant if CASE? is set to true. 
  1337.     Returns: -1 if first string low, 0 if strings are equal, 1 if first 
  1338.     string high. We assume the lengths are both less than 64K. Similar to 
  1339.     $=, but faster.
  1340.  
  1341. CODE  ( --  :  name )
  1342.         Assembler          Nuc2.asm
  1343.     (68k Mops only) Creates a header for a code definition. In our system 
  1344.     it is actually a synonym for COLHDR, since there's really no essential 
  1345.     difference between code and colon definitions. In PowerMops, the 
  1346.     corresponding word is :PPC_CODE.
  1347.  
  1348. code,  ( n -- )
  1349.         Compiler          pnuc3
  1350.     (PowerMops only) Stores n in the dictionary where CDP points, and adds 
  1351.     4 to CDP.
  1352.  
  1353. codeC,  ( c -- )
  1354.         Compiler          pnuc3
  1355.     (PowerMops only) Stores the byte c in the dictionary where CDP points, 
  1356.     and adds 1 to CDP.
  1357.  
  1358. codeN,  ( addr len -- )
  1359.         Compiler          pnuc3
  1360.     (PowerMops only) Places the bytes designated by (addr len) in the 
  1361.     dictionary where CDP points, and adds len to CDP.
  1362.  
  1363. codeW,  ( n -- )
  1364.         Compiler          pnuc3
  1365.     (PowerMops only) Stores the low 16 bits of n in the dictionary where 
  1366.     CDP points, and adds 2 to CDP.
  1367.  
  1368. code_align  ( -- )
  1369.         Compiler          pnuc3
  1370.     (PowerMops only) Aligns CDP up to a 4-byte boundary. Any bytes skipped 
  1371.     are cleared.
  1372.  
  1373. code_allot  ( n -- )
  1374.         Compiler          pnuc3
  1375.     (PowerMops only) Allocates n bytes in the code are of the dictionary, 
  1376.     by incrementing CDP by n.
  1377.  
  1378. code_reserve  ( n -- )
  1379.         Compiler          pnuc3
  1380.     (PowerMops only) Allots the next n bytes in the code are of the 
  1381.     dictionary and erases them.
  1382.  
  1383. COLHDR  ( -- )
  1384.         Compiler          Nuc2.asm/pnuc4
  1385.     Lays down the header for a colon definition.
  1386.  
  1387. COMPILE,  ( xt -- )
  1388.         Compiler          Nuc2.asm/pnuc4
  1389.     Compiles the word with the given xt. ANSI synonym for (COMP) - see the 
  1390.     comments there.
  1391.  
  1392. CONSTANT  ( n --  :  name )
  1393.         Memory          Nuc2.asm/qpCreate
  1394.     Creates a dictionary entry whose runtime action is to place n on the 
  1395.     stack.
  1396.  
  1397. CONTEXT  ( -- addr )
  1398.         Compiler          Nuc.asm/setup
  1399.     
  1400.  
  1401. COPYTO:  ( obj -- )
  1402.         OOP          Class/zClass
  1403.     A method. Copies the ivar part of the passed in object to self. Doesn't 
  1404.     check type - be careful.
  1405.  
  1406. COS  ( r1 -- r2 )
  1407.         FloatingPoint          floating point
  1408.     (68k Mops only) Computes cosine, given radians.
  1409.  
  1410. COT  ( r1 -- r2 )
  1411.         FloatingPoint          floating point
  1412.     (68k Mops only) Computes cotangent, given radians.
  1413.  
  1414. COUNT  ( addr -- addr+1 len )
  1415.         Strings          Nuc2.asm/pnuc1
  1416.     Converts a Pascal type string (str255) to the addr len format.
  1417.  
  1418. CR  ( -- )
  1419.         Console          Nuc2.asm/pnuc2
  1420.     "Prints" a carriage-return/linefeed (cr/lf) on the screen. If system 
  1421.     vector pcrvec is vectored to pcr, by executing +print, the cr sends a 
  1422.     cr/lf to the printer.
  1423.  
  1424. CREATE  ( --  : name )
  1425.         Compiler          Nuc2.asm/qpCreate
  1426.     Creates a definition for name. DP is aligned, but no extra space is 
  1427.     allocated. When name is executed, it returns the aligned DP value.
  1428.  
  1429. CREPLACE  ( c mask addr -- )
  1430.         Memory          Nuc2.asm/pnuc1
  1431.     Replaces bits in the addressed byte with the corresponding bits from c, 
  1432.     in those positions where the mask has ones. Dont' use. Use bset, etc.
  1433.  
  1434. CRESET  ( c addr -- )
  1435.         Memory          Nuc2.asm/pnuc1
  1436.     Clears bits in byte at addr, corresponding to the bits SET in c.
  1437.  
  1438. CROSSCURS  ( -- )
  1439.         Quickdraw          QD
  1440.     Sets the cursor to this.
  1441.  
  1442. CRVEC  ( -- )
  1443.         System          Nuc2.asm
  1444.     (68k Mops only) A system vector which is called when we send a carriage 
  1445.     return to the Mops window. In PowerMops we haven't implemented this 
  1446.     vector as it hasn't proved very useful.
  1447.  
  1448. CSET  ( c addr -- )
  1449.         Memory          Nuc2.asm/pnuc1
  1450.     ORs c into the byte at addr.
  1451.  
  1452. CSTATE  ( -- b )
  1453.         Compiler          Nuc2.asm/pnuc1
  1454.     This value is a boolean which is true while a class is being compiled. 
  1455.     It is analogous to state which is true while a colon word is being 
  1456.     compiled.
  1457.  
  1458. CTOGGLE  ( c addr -- )
  1459.         Memory          Nuc2.asm/pnuc1
  1460.     Exclusive-ORs c into the byte at addr.
  1461.  
  1462. CURR-DEF  ( -- addr )
  1463.         compiler          pnuc1
  1464.     (PowerMops only) The address of the start of the code of the current 
  1465.     definition.
  1466.  
  1467. curs?  ( -- b )
  1468.         system          Nuc2.asm/pnuc1
  1469.     True if we're displaying a cursor after each output character.
  1470.  
  1471. CURSOR  ( n --  : name )
  1472.         Quickdraw          QD
  1473.     A defining word for cursors, uses the Toolbox calls GetCursor and 
  1474.     SetCursor at runtime execution of daughter words.
  1475.  
  1476. CvtClip  ( -- )
  1477.         Events          Event
  1478.     A vect. Called for clip conversion.
  1479.  
  1480. D+  ( d1 d2 -- d1+d2 )
  1481.         arithmetic          longmath/pnuc1
  1482.     Double add.
  1483.  
  1484. D-  ( d1 d2 -- d1-d2 )
  1485.         arithmetic          longmath/pnuc1
  1486.     Double subtract.
  1487.  
  1488. DATETIME  ( -- n )
  1489.         Time          Base/zBase
  1490.     Returns the value of the Mac global variable Time on the stack. This is 
  1491.     the number of seconds since midnight, January 1, 1904.
  1492.  
  1493. DB  ( -- )
  1494.         Debugging          Nuc2.asm/cg6
  1495.     Calls MacsBug or whatever debugger may be installed (A9FF trap).
  1496.  
  1497. DBLTICKS  ( -- n )
  1498.         Events          Event
  1499.     Returns the double-click interval in ticks via the Mac global variable 
  1500.     DoubleTime.
  1501.  
  1502. DECIMAL  ( -- )
  1503.         NumericConversion          Nuc2.asm/pnuc1
  1504.     Sets base to 10.
  1505.  
  1506. DEFINED?  ( -- addr n  : word )
  1507.         Compiler          Nuc2.asm/pnuc4
  1508.     Defined as MWORD FIND. Does a FIND on the next word in the input stream.
  1509.  
  1510. DEG2RAD  ( r1 -- r2 )
  1511.         FloatingPoint          floating point
  1512.     (68k Mops only) Converts degrees to radians.
  1513.  
  1514. DEL  ( -- )
  1515.         System          QD
  1516.     Draws a downward-pointing arrow to the right of and below the current 
  1517.     pen position - we need this for pop-up menus. Any mathematician will 
  1518.     recognize this symbol - hence the name.
  1519.  
  1520. DEPTH  ( -- n )
  1521.         Stack          Nuc2.asm/pnuc1
  1522.     Returns the number of items on the stack prior to executing depth.
  1523.  
  1524. DESK  ( -- )
  1525.         Events          Event
  1526.     Desktop click handler - do nothing.
  1527.  
  1528. DFA  ( class -- dfa )
  1529.         OOPprimitive          Class/qpClass
  1530.     Given a pointer to a class, returns the data field address. First 2 
  1531.     bytes are the data length, second 2 bytes are the width of the indexed 
  1532.     elements.
  1533.  
  1534. DIALOG  ( --  : name )
  1535.         Alerts/Dialogs          DialogMod.txt
  1536.     A standard class, subclass of x-array. The Mops approach to handling 
  1537.     dialogs.
  1538.  
  1539. DICADDR  ( --  : name )
  1540.         OOP          Struct/pStruct
  1541.     DICADDR is a relocatable dictionary address class - use to store 
  1542.     non-executable dictionary addresses.
  1543.  
  1544. DICSIZE  ( -- n )
  1545.         Compiler          Nuc2.asm/setup
  1546.     A value. Set by the startup code to the actual space allocated for the 
  1547.     dictionary
  1548.  
  1549. DIE  ( strID -- )
  1550.         Errors          Nuc.asm/pnuc3
  1551.     (68k) A system vector, normally pointing to (die), defined in file 
  1552.     Base. (PowerMops) a forward definition, resolved in pnuc3. The default 
  1553.     Mops error word. Displays the given mops.rsrc string, dumps the stacks 
  1554.     and aborts.
  1555.  
  1556. DIGIT  ( c base -- n2 t | f )
  1557.         Arithmetic           Nuc2.asm/pnuc1
  1558.     Converts the ASCII character c using base into its binary equivalent 
  1559.     n2, and leaves a true flag; if conversion fails, leaves a false flag 
  1560.     only. Digit is a primitive used by (number).
  1561.  
  1562. DISK-EVT  ( -- false )
  1563.         Events          Event
  1564.     An action word for fevent. Handles a disk insert event.
  1565.  
  1566. DISPL!  ( addr addr2 -- )
  1567.         Compiler          Nuc2.asm/pnuc3
  1568.     Stores addr1 as a 4-byte self-relative displacement at addr2. The 
  1569.     converse of DISPLACE.
  1570.  
  1571. DISPL,  ( addr -- )
  1572.         Compiler          Nuc2.asm/pnuc3
  1573.     Stores addr as a 4-byte self-relative displacement at HERE, and 
  1574.     advances DP by 4.
  1575.  
  1576. DISPL,  ( addr -- )
  1577.         Compiler          Nuc2.asm/pnuc3
  1578.     Stores addr as a 4-byte self-relative displacement at DP, and adds 4 to 
  1579.     DP.
  1580.  
  1581. DISPLACE  ( addr -- addr' )
  1582.         Compiler          Nuc2.asm/pnuc3
  1583.     Takes the 4-byte value at addr as a self-relative displacement, and 
  1584.     returns the resulting address (obtained by adding the value to addr). 
  1585.     But if addr is zero, DISPLACE returns zero. This feature is useful for 
  1586.     finding the end of a chained list.
  1587.  
  1588. DisplCode,  ( addr -- )
  1589.         Compiler          pnuc3
  1590.     (PowerMops only) Stores addr as a 4-byte self-relative displacement in 
  1591.     the code area of the dictionary where CDP points, and advances CDP by 4.
  1592.  
  1593. DLEN  ( obj -- n )
  1594.         OOPprimitive          Class/qpClass
  1595.     Given a class pointer, returns the ivar data length.
  1596.  
  1597. DLEN&XWID  ( class -- dlen xwid )
  1598.         OOPprimitive          Class/qpClass
  1599.     Given a class pointer, retuns the ivar data length and width of the 
  1600.     indexed elements.
  1601.  
  1602. DLGWIND  ( -- 1 )
  1603.         Windows          Window
  1604.     A constant.
  1605.  
  1606. DNEGATE  ( d -- -d )
  1607.         arithmetic          longmath/pnuc1
  1608.     Negates a double number.
  1609.  
  1610. DO  ( end beg -- )
  1611.         ControlStructures          Nuc2.asm/qpCond
  1612.     Marks beginning of DO ... LOOP sequence. Will always execute at least 
  1613.     once, even if end ≤ beg. Also see ?DO. The loop is considered to be 
  1614.     finished if the index crosses the boundary between the limit and the 
  1615.     limit minus one, in either direction.
  1616.  
  1617. doAEhandler  ( ^AE ^AEReply RefCon -- )
  1618.         Events          Nuc1.asm
  1619.     Called from AEhandler to set things up at the start of a handler.
  1620.  
  1621. DOCWIND  ( -- 0 )
  1622.         Windows          Window
  1623.     A constant.
  1624.  
  1625. DODSK  ( item# -- item# )
  1626.         Menus          Menu
  1627.     Executes the desk accessory for an item. Mops will use this as the 
  1628.     second action handler for the object applemen.
  1629.  
  1630. DOES>  ( -- )
  1631.         Compiler          Nuc2.asm/qpCreate
  1632.     Defines the runtime action of a word defined with <builds.
  1633.  
  1634. DOWN  ( n2 n3 n1 -- n1 n2 n3 )
  1635.         Stack          Nuc2.asm/pnuc1
  1636.     Reverse of rot. Also called -ROT.
  1637.  
  1638. DP  ( -- addr )
  1639.         Compiler          Nuc.asm/pnuc1
  1640.     A value. The address of the next available memory location in the 
  1641.     dictionary, or in PowerMops, the address of the next available location 
  1642.     in the data area.
  1643.  
  1644. DPL  ( -- n )
  1645.         Console           Nuc2.asm/pnuc1
  1646.     Returns the number of digits to the right of the decimal on double 
  1647.     integer input. This may be used to compute the output column location 
  1648.     of a decimal point in user generated formatting. The default value on 
  1649.     single number inputs is -1.
  1650.  
  1651. DROP  ( n -- )
  1652.         Stack          Nuc2.asm/pnuc1
  1653.     
  1654.  
  1655. DUMP  ( addr len -- )
  1656.         Memory          Struct/pStruct
  1657.     Displays the contents of memory beginning at addr for len bytes in a 
  1658.     hex and ascii format. Note that the \/ mark points to the requested 
  1659.     address (the dump may start at an address other than addr).
  1660.  
  1661. DUMP:  ( -- )
  1662.         OOP          Class/zClass
  1663.     A method. Performs a formatted dump of a class.
  1664.  
  1665. DUP  ( n -- n n )
  1666.         Stack          Nuc2.asm/pnuc1
  1667.     
  1668.  
  1669. E  ( -- r )
  1670.         FloatingPoint          floating point
  1671.     (68k Mops only) An fcon. Returns the base of the system of natural 
  1672.     logarithms, 2.71828...
  1673.  
  1674. E.  ( r -- )
  1675.     PowerMops: ( -- ) ( F: r -- )
  1676.         FloatingPoint          floating point/zFloating point
  1677.     Same as 26 e.r
  1678.  
  1679. E.R  ( r wid -- )
  1680.     PowerMops: ( wid -- ) ( F: r -- )
  1681.         FloatingPoint          floating point/zFloating point
  1682.     Prints the floating point number in scientific notation in a field wid 
  1683.     characters wide.
  1684.  
  1685. ECHO?  ( -- b )
  1686.         Console          Base/pnuc1
  1687.     A value. Set true to echo loads to screen.
  1688.  
  1689. ECHOVEC  ( -- )
  1690.         Console           Nuc2.asm/pnuc2
  1691.     This system vector is executed in Mops to echo keystrokes. When Mops 
  1692.     starts up, echovec is vectored to (emit) which prints a character on 
  1693.     the screen only. Selecting Echo to Printer from the Mops menu vectors 
  1694.     echovec to echo, which prints a character on the screen and printer 
  1695.     (this is the same as +print).
  1696.  
  1697. EDITMENU  ( --  : name )
  1698.         Menus          MenuMod.txt
  1699.     A standard class, subclass of menu. An editmenu facilitates standard 
  1700.     desk accessory support by first calling SystemEdit when an exec: 
  1701.     message is sent so that any active DA first gets a go at it. The Mops 
  1702.     editmenu object is editmen.
  1703.  
  1704. ELSE  ( -- )
  1705.         ControlStructures          Nuc2.asm/qpCond
  1706.     standard. Use with IF and NIF.
  1707.  
  1708. EMIT  ( c -- )
  1709.         Console          Nuc2.asm/pnuc2
  1710.     Prints the character (lower 8 bits of the number) on the stack to the 
  1711.     screen or printer by executing the system vectors emitvec and pemitvec. 
  1712.     Whether the screen and/or printer are used depends on the contents of 
  1713.     emitvec and pemitvec. When Mops starts up, emitvec is vectored to 
  1714.     (emit) and pemitvec is vectored to drop. So, the default action of emit 
  1715.     is to print a character on the screen only. Selecting Echo to Printer 
  1716.     from the Mops menu vectors echovec to echo, which prints a character on 
  1717.     the screen and the printer (this is the same as +print). The system 
  1718.     value OUT is incremented for each character transmitted.
  1719.  
  1720. emit?  ( -- b )
  1721.         Compiler          Nuc2.asm/setup
  1722.     A value. True if EMIT is actually to emit anything.
  1723.  
  1724. EMITVEC  ( -- )
  1725.         Console           Nuc2.asm/pnuc2
  1726.     This system vector contains the xt of the word that performs character 
  1727.     output to the primary device, usually the screen. When Mops starts up, 
  1728.     emitvec is vectored to (emit), the primitive that prints a character on 
  1729.     the screen using the DrawChar routine in QuickDraw.
  1730.  
  1731. ENDCASE  ( n -- )
  1732.         ControlStructures          Base/zBase
  1733.     Marks end of CASE structure.
  1734.  
  1735. ENDLIST?  ( chr -- b )
  1736.         Compiler          Base/zBase
  1737.     Primitive used by type{.
  1738.  
  1739. ENDOF  ( -- )
  1740.         ControlStructures          Base/zBase
  1741.     Use in CASE structure.
  1742.  
  1743. ENUM{  ( --  :  name1 name2 etc. )
  1744.         Compiler          Base/zBase
  1745.     Synonym for ENUM{. Defines an enumerated type. The first name in the 
  1746.     list will be defined as a constant of value 0, the second will get 
  1747.     value 1, and so on.
  1748.  
  1749. EOF  ( -- -39 )
  1750.         Files          Files/pFiles
  1751.     A constant. Mac File Manager result code eofErr. Logical end-of-file 
  1752.     reached during read operation.
  1753.  
  1754. ERASE  ( addr n -- )
  1755.         LowStrings          Nuc2.asm/pnuc2
  1756.     Clears (fills with zeros) memory starting at addr for n bytes.
  1757.  
  1758. ERRORVEC  ( -- )
  1759.         System          Nuc.asm/pnuc1
  1760.     A system vector. Allows an application to handle an error before the 
  1761.     normal Mops error handling gets a chance.
  1762.  
  1763. EVALUATE  ( addr len -- )
  1764.         Compiler          Args/pArgs
  1765.     Makes the passed-in string the input stream for interpretation or 
  1766.     compilation, until it is exhausted.
  1767.  
  1768. EVENT  ( --  : name )
  1769.         Events          Event
  1770.     A system class, subclass of x-array. Our Mops event object is fevent.
  1771.  
  1772. EVENT?  ( eventMask -- b )
  1773.         Events          Nuc2.asm/pnuc2
  1774.     Calls the Toolbox Event Manager routine EventAvail to test for the 
  1775.     event(s) specified by eventMask. If an event is available, leaves a 
  1776.     true flag; otherwise, leaves a false flag.
  1777.  
  1778. EVENTLOOP  ( -- )
  1779.         Events          Frontend/zFrontend
  1780.     A word you can call as an event loop in many applications.
  1781.  
  1782. EX-GEN  ( xt -- )
  1783.         Compiler          Nuc2.asm/cg7
  1784.     "Execute general". Executes the word with the given xt. The word may be 
  1785.     anything. It is executed by compiling it into a temporary buffer, then 
  1786.     branching there. Slower than Execute, but unlike Execute, will really 
  1787.     execute anything.
  1788.  
  1789. EX-METHOD  ( obj xt -- )
  1790.         OOP          Nuc2.asm/qpClass
  1791.     Executes the method with the given xt, using the given object.
  1792.  
  1793. EXECUTE  ( xt -- )
  1794.         Compiler          Nuc2.asm/setup
  1795.     Standard. Executes the word with the given xt.
  1796.  
  1797. EXIT  ( -- )
  1798.         ControlStructures          Nuc2.asm/qpCond
  1799.     Terminates execution of the current word or method, and returns control 
  1800.     to the next higher word on the return stack.
  1801.  
  1802. EXN  ( xt n -- )
  1803.         Compiler          Nuc2.asm/cg7
  1804.     is to EX-GEN what (COMPN) is to (COMP). It has the additional parameter 
  1805.     n which is action code for -> ++> etc. Because this can be called from 
  1806.     EX-GEN (which may be executing a prefix op), we use the alternate 
  1807.     execution buffer ExBuf1.
  1808.  
  1809. EXP  ( r1 -- r2 )
  1810.         FloatingPoint          floating point
  1811.     (68k Mops only) Base e exponential. In PowerMops, use FEXP.
  1812.  
  1813. EXP1  ( r1 -- r2 )
  1814.         FloatingPoint          floating point
  1815.     (68k Mops only) e**x - 1
  1816.  
  1817. EXP21  ( r1 -- r2 )
  1818.         FloatingPoint          floating point
  1819.     (68k Mops only) 2**x - 1
  1820.  
  1821. EXTEND  ( n1 -- n2 )
  1822.         Arithmetic          Nuc2.asm/pnuc1
  1823.     Takes the low 16 bits of n1 as a 16-bit number, and sign-extends it to 
  1824.     32 bits. Stack alignment is unaffected.
  1825.  
  1826. extraFind  ( -- )
  1827.         compiler          Nuc2.asm/pnuc1
  1828.     A dynamic vector. If non-zero, called by FIND so we can include a 
  1829.     special purpose search when necessary.
  1830.  
  1831. extra_inits  ( -- )
  1832.         FrontEnd          Struct/pnuc1
  1833.     Executes all of the xts contained in the object init_actions - this 
  1834.     allows an application to add any special initialization it wants.
  1835.  
  1836. F!  ( r addr -- )
  1837.     PowerMops: ( addr -- ) ( F: r -- )
  1838.         FloatingPoint          pnuc1
  1839.     floating point/pnuc1    Stores the floating point number r at addr.
  1840.  
  1841. F*  ( r1 r2 -- r1*r2 )
  1842.     PowerMops: ( -- ) ( F: r1 r2 -- r1*r2 )
  1843.         FloatingPoint          floating point/pnuc1
  1844.     Floating multiply.
  1845.  
  1846. F**  ( r1 r2 -- r1**r2 )
  1847.     PowerMops: ( -- ) ( F: r1 r2 -- r1**r2 )
  1848.         FloatingPoint          floating point
  1849.     General exponentiation - takes 2 floats.
  1850.  
  1851. F**2  ( PPC/ ( -- ) ( F: r1 -- r2 ) )
  1852.         FloatingPoint          zFloating point
  1853.     (PowerMops only) Floating square. Equivalent to fdup f*.
  1854.  
  1855. F+  ( r1 r2 -- r1+r2 )
  1856.     PowerMops: ( -- ) ( F: r1 r2 -- r1+r2 )
  1857.         FloatingPoint          floating point/pnuc1
  1858.     Floating add.
  1859.  
  1860. F-  ( r1 r2 -- r1-r2 )
  1861.     PowerMops: ( -- ) ( F: r1 r2 -- r1-r2 )
  1862.         FloatingPoint          floating point/pnuc1
  1863.     Floating subtract.
  1864.  
  1865. F.R  ( r wid -- )
  1866.     PowerMops: ( wid -- ) ( F: r -- )
  1867.         FloatingPoint          floating point/zFloating point
  1868.     Prints the floating point number without exponents in a field wid 
  1869.     characters wide.
  1870.  
  1871. F/  ( r1 r2 -- r1/r2 )
  1872.     PowerMops: ( -- ) ( F: r1 r2 -- r1/r2 )
  1873.         FloatingPoint          floating point/pnuc1
  1874.     Floating divide.
  1875.  
  1876. F0<  ( r -- b )
  1877.     PowerMops: ( -- b ) ( F: r -- )
  1878.         FloatingPoint          floating point/pnuc1
  1879.     
  1880.  
  1881. F0<=  ( r -- b )
  1882.     PowerMops: ( -- b ) ( F: r -- )
  1883.         FloatingPoint          floating point/pnuc1
  1884.     
  1885.  
  1886. F0<>  ( r -- b )
  1887.     PowerMops: ( -- b ) ( F: r -- )
  1888.         FloatingPoint          floating point/pnuc1
  1889.     
  1890.  
  1891. F0=  ( r -- b )
  1892.     PowerMops: ( -- b ) ( F: r -- )
  1893.         FloatingPoint          floating point/pnuc1
  1894.     
  1895.  
  1896. F0>  ( r -- b )
  1897.     PowerMops: ( -- b ) ( F: r -- )
  1898.         FloatingPoint          floating point/pnuc1
  1899.     
  1900.  
  1901. F0>=  ( r -- b )
  1902.     PowerMops: ( -- b ) ( F: r -- )
  1903.         FloatingPoint          floating point/pnuc1
  1904.     
  1905.  
  1906. F2DROP  ( r1 r2 -- )
  1907.     PowerMops: ( -- ) ( F: r1 r2 -- )
  1908.         FloatingPoint          floating point/pnuc1
  1909.     
  1910.  
  1911. F2DUP  ( r1 r2 -- r1 r2 )
  1912.     PowerMops: ( -- ) ( F: r1 r2 -- r1 r2 )
  1913.         FloatingPoint          floating point/pnuc1
  1914.     
  1915.  
  1916. F2SWAP  ( r1 r2 r3 r4 -- r3 r3 r1 r2 )
  1917.     PowerMops: ( -- ) ( F: r1 r2 r3 r4 -- r3 r3 r1 r2 )
  1918.         FloatingPoint          floating point/pnuc1
  1919.     
  1920.  
  1921. F<  ( r1 r2 -- b )
  1922.     PowerMops: ( -- b ) ( F: r1 r2 -- )
  1923.         FloatingPoint          floating point/pnuc1
  1924.     
  1925.  
  1926. F<=  ( r1 r2 -- b )
  1927.     PowerMops: ( -- b ) ( F: r1 r2 -- )
  1928.         FloatingPoint          floating point/pnuc1
  1929.     
  1930.  
  1931. F<>  ( r1 r2 -- b )
  1932.     PowerMops: ( -- b ) ( F: r1 r2 -- )
  1933.         FloatingPoint          floating point/pnuc1
  1934.     
  1935.  
  1936. F=  ( r1 r2 -- b )
  1937.     PowerMops: ( -- b ) ( F: r1 r2 -- )
  1938.         FloatingPoint          floating point/pnuc1
  1939.     
  1940.  
  1941. F>  ( r1 r2 -- b )
  1942.     PowerMops: ( -- b ) ( F: r1 r2 -- )
  1943.         FloatingPoint          floating point/pnuc1
  1944.     
  1945.  
  1946. F>=  ( r1 r2 -- b )
  1947.     PowerMops: ( -- b ) ( F: r1 r2 -- )
  1948.         FloatingPoint          floating point/pnuc1
  1949.     
  1950.  
  1951. F@  ( addr -- r )
  1952.     PowerMops: ( addr -- ) ( F: -- r )
  1953.         FloatingPoint          floating point/pnuc1
  1954.     Fetches the floating point number at addr. In PowerMops, it is fetched 
  1955.     to the floating point stack.
  1956.  
  1957. FABS  ( r -- |r| )
  1958.     PowerMops: ( -- ) ( F: r -- |r| )
  1959.         FloatingPoint          floating point/pnuc1
  1960.     Floating absolute value.
  1961.  
  1962. FACOS  ( PPC/ ( -- ) ( F: r1 -- r2 ) )
  1963.         FloatingPoint          zFloating point
  1964.     (PowerMops only) FP acos.
  1965.  
  1966. FACOSH  ( PPC/ ( -- ) ( F: r1 -- r2 ) )
  1967.         FloatingPoint          zFloating point
  1968.     (PowerMops only) FP acosh.
  1969.  
  1970. fAE  ( -- ^AE )
  1971.         events          Nuc.asm
  1972.     A value used to handle AppleEents.
  1973.  
  1974. FALSE  ( -- b )
  1975.         Arithmetic          Nuc2.asm/setup
  1976.     A constant = 0
  1977.  
  1978. FASIN  ( PPC/ ( -- ) ( F: r1 -- r2 ) )
  1979.         FloatingPoint          zFloating point
  1980.     (PowerMops only) FP asin.
  1981.  
  1982. FASINH  ( PPC/ ( -- ) ( F: r1 -- r2 ) )
  1983.         FloatingPoint          zFloating point
  1984.     (PowerMops only) FP asinh.
  1985.  
  1986. FATAN  ( PPC/ ( -- ) ( F: r1 -- r2 ) )
  1987.         FloatingPoint          zFloating point
  1988.     (PowerMops only) FP atan.
  1989.  
  1990. FATAN2  ( PPC/ ( -- ) ( F: r1 r2 -- r3 ) )
  1991.         FloatingPoint          zFloating point
  1992.     (PowerMops only) r3 is the radian angle whose tangent is r1/r2. An 
  1993.     ambiguous condition exists if r1 and r2 are zero.
  1994.  
  1995. FATANH  ( PPC/ ( -- ) ( F: r1 -- r2 ) )
  1996.         FloatingPoint          zFloating point
  1997.     (PowerMops only) FP atanh.
  1998.  
  1999. FCON  ( r --  : name )
  2000.         FloatingPoint          Nuc2.asm
  2001.     (68k Mops only - in PowerMops the name is FCONSTANT) FP analog of 
  2002.     constant.
  2003.  
  2004. FCONSTANT  ( r --  : name )
  2005.     PowerMops: ( -- ) ( F: r -- )
  2006.         FloatingPoint          qpCreate
  2007.     FP analog of constant.
  2008.  
  2009. FCONV?  ( addr len -- r T  |  -- F )
  2010.         FloatingPoint          floating point
  2011.     (68k Mops only) Converts the passed-in ASCII string to floating, if 
  2012.     possible. I like this name better than ATOF which Neon had, but change 
  2013.     it back if you want to.
  2014.  
  2015. FCOS  ( PPC/ ( -- ) ( F: r1 -- r2 ) )
  2016.         FloatingPoint          zFloating point
  2017.     (PowerMops only) FP cosine.
  2018.  
  2019. FCOSH  ( PPC/ ( -- ) ( F: r1 -- r2 ) )
  2020.         FloatingPoint          zFloating point
  2021.     (PowerMops only) FP cosh.
  2022.  
  2023. FDEPTH  ( -- n )
  2024.         Stack          pnuc1
  2025.     PowerMops only. Returns the number of items on the floating point stack 
  2026.     prior to executing depth.
  2027.  
  2028. FDOWN  ( r1 r2 r3 -- r3 r1 r2 )
  2029.     PowerMops: ( -- ) ( F: r1 r2 r3 -- r3 r1 r2 )
  2030.         FloatingPoint          floating point/pnuc1
  2031.     
  2032.  
  2033. FDROP  ( r -- )
  2034.     PowerMops: ( -- ) ( F: r -- )
  2035.         FloatingPoint          floating point/pnuc1
  2036.     
  2037.  
  2038. FDUP  ( r -- r r )
  2039.     PowerMops: ( -- ) ( F: r -- r r )
  2040.         FloatingPoint          floating point/pnuc1
  2041.     
  2042.  
  2043. fence  ( -- addr )
  2044.         Compiler          Nuc.asm/pnuc1
  2045.     A value. Leaves the address below which forget will not operate.
  2046.  
  2047. fEvent  ( -- obj )
  2048.         Events          Event/setup
  2049.     The standard Mops event object. This event is the default (and should 
  2050.     be the only) Event object used by Mops. Actually defined in Nuc.asm, it 
  2051.     is set to class fevent in file events.
  2052.  
  2053. FEXP  ( PPC/ ( -- ) ( F: r1 -- r2 ) )
  2054.         FloatingPoint          zFloating point
  2055.     (PowerMops only) Base e exponential.
  2056.  
  2057. FEXPM1  ( PPC/ ( -- ) ( F: r1 -- r2 ) )
  2058.         FloatingPoint          zFloating point
  2059.     (PowerMops only) Raise e to the power r1 and subtract one, giving r2.
  2060.  
  2061. FFA  ( class -- ffa )
  2062.         OOPprimitive          Class/qpClass
  2063.     Given a pointer to a class, returns the flag field address.
  2064.  
  2065. fFcb  ( -- obj )
  2066.         files          Nuc2.asm/setup
  2067.     An object pointer that is set to class file in Files. Used for some 
  2068.     basic file-handling, especially before Files is loaded.
  2069.  
  2070. FILE  ( --  : name )
  2071.         Files          Files/pFiles
  2072.     A standard class. Used to call Toolbox file routines, has 138 bytes for 
  2073.     a file control block.
  2074.  
  2075. FILE-MARK  ( -- -300 )
  2076.         Files          Files/pnuc1
  2077.     A constant. Marks the start of a loaded file - we plant some useful 
  2078.     info there. We put the file name in the dic as if it's a definition 
  2079.     name, but use file-mark as a "handler code". Then after that we put the 
  2080.     useful info. See file extrasMod.
  2081.  
  2082. FILL  ( addr n c -- )
  2083.         LowStrings          Nuc2.asm/pnuc2
  2084.     Beginning at address, fills n bytes with given 8-bit value c.
  2085.  
  2086. FIND  ( str-addr -- xt n |  -- str-addr 0 )
  2087.         Compiler          Nuc2.asm/pnuc4
  2088.     ANSI standard. Looks up the dictionary for the given counted string. If 
  2089.     the search succeeds, the returned xt is of the found dictionary entry, 
  2090.     and n is -1 for a non-immediate word and 1 for an immediate word. If 
  2091.     the search fails, the original string address is returned unchanged and 
  2092.     n is zero.
  2093.  
  2094. FIND-WINDOW  ( Tpoint  --  region  ^window )
  2095.         Events          Nuc2.asm/pnuc2
  2096.     Calls the Window Manager routine FindWindow to find the window in which 
  2097.     a mouse-down event occurred at Tpoint, a Toolbox point in global 
  2098.     coordinates. Leaves the region of the window in which the mouse-down 
  2099.     occurred and ^window, the pointer to the window object's private data.
  2100.  
  2101. FINFO  ( -- addr )
  2102.                   Nuc2.asm
  2103.     (68k Mops only) NOTE: This is only valid for systems where no 
  2104.     AppleEvents are available. Therefore if they are available, we return a 
  2105.     nil pointer. Leaves a relative pointer to the Finder information area. 
  2106.     The following code will scan the information block, and print the 
  2107.     Vref#, file type, version and file name for each file passed by the 
  2108.     Finder.
  2109.  
  2110. FIX_CACHES  ( addr len -- )
  2111.         Compiler          pnuc3
  2112.     (PowerMops only) Does whatever cache flushing is needed on the PowerPC, 
  2113.     to allow instructions which have been stored in the range given by 
  2114.     (addr len) to be subsequently executed. (On the 68k, we use 
  2115.     PATCHES_DONE which doesn't take a range)
  2116.  
  2117. FLN  ( PPC/ ( -- ) ( F: r1 -- r2 ) )
  2118.         FloatingPoint          zFloating point
  2119.     (PowerMops only) Log to base e.
  2120.  
  2121. FLNP1  ( PPC/ ( -- ) ( F: r1 -- r2 ) )
  2122.         FloatingPoint          zFloating point
  2123.     (PowerMops only) Log to base e, plus 1.
  2124.  
  2125. FLOAT>  ( r -- n )
  2126.         FloatingPoint          floating point
  2127.     (68k Mops only) Converts the float to an integer. Rounds.
  2128.  
  2129. FLOG  ( PPC/ ( -- ) ( F: r1 -- r2 ) )
  2130.         FloatingPoint          zFloating point
  2131.     (PowerMops only) Log to base 10.
  2132.  
  2133. FNEGATE  ( r -- -r )
  2134.     PowerMops: ( -- ) ( F: r -- -r )
  2135.         FloatingPoint          floating point/pnuc1
  2136.     Floating negate.    
  2137.  
  2138. FNF  ( -- -43 )
  2139.         Files          Files/pFiles
  2140.     A constant. Mac File Manager result code fnfErr. File not found.
  2141.  
  2142. FNIP  ( r1 r2 -- r2 )
  2143.     PowerMops: ( -- ) ( F: r1 r2 -- r1 r2 r1 )
  2144.         FloatingPoint          floating point/pnuc1
  2145.     
  2146.  
  2147. FOR  ( limit -- )
  2148.         ControlStructures          Nuc2.asm/qpCond
  2149.     Marks beginning of a FOR ... NEXT loop. These are simple loops that 
  2150.     have less overhead than DO loops. The loop index i counts down from 
  2151.     limit-1 to zero. The initial limit must be less than 64K. Uses a DBRA 
  2152.     loop instruction for speed. You can't LEAVE a FOR ... NEXT loop.
  2153.  
  2154. FORGET  ( -- : word )
  2155.         Compiler          Nuc2.asm/pnuc3
  2156.     Deletes the word from the dictionary and ALL entries above it (i.e., in 
  2157.     higher memory). Issues message "in protected dictionary" if the word is 
  2158.     below fence, and aborts. FORGET is now deprecated in ANSI Forth, and 
  2159.     shouldn't be used in new code. It isn't really adequate in PowerMops, 
  2160.     since it can't handle the data area, but we keep it for backward 
  2161.     compatibility. We recommend that you now use MARKER instead.
  2162.  
  2163. FORWARD  ( --  : name )
  2164.         Compiler          Base/qpCond
  2165.     Creates a word which is to be defined later with :f, the special colon 
  2166.     compiler for forward-referenced Mops words, because :f makes the word 
  2167.     behave like a colon definition.
  2168.  
  2169. FOVER  ( r1 r2 -- r1 r2 r1 )
  2170.     PowerMops: ( -- ) ( F: r1 r2 -- r1 r2 r1 )
  2171.         FloatingPoint          floating point/pnuc1
  2172.     
  2173.  
  2174. FPRECT  ( -- obj )
  2175.         system          Nuc.asm/setup
  2176.     A Rectangle object. Used in calculation for scrolling fWind.
  2177.  
  2178. FPU?  ( -- n )
  2179.         FloatingPoint          Nuc2.asm
  2180.     (68k only) A value. Set by a _Gestalt call in the startup code to the 
  2181.     FPU status.
  2182.  
  2183. FREE  ( -- )
  2184.         System          Nuc2.asm/pnuc2
  2185.     Glue routine for the FreeMem toolbox call. Returns the number of free 
  2186.     bytes in the heap.
  2187.  
  2188. FREEBLK  ( -- )
  2189.         System          Nuc2.asm/pnuc2
  2190.     Glue routine for the MaxMem toolbox call. Returns the maximum free 
  2191.     bytes that could be obtained in a single block.
  2192.  
  2193. FROT  ( r1 r2 r3 -- r2 r3 r1 )
  2194.     PowerMops: ( -- ) ( F: r1 r2 r3 -- r2 r3 r1 )
  2195.         FloatingPoint          floating point/pnuc1
  2196.     
  2197.  
  2198. FSIN  ( PPC/ ( -- ) ( F: r1 -- r2 ) )
  2199.         FloatingPoint          zFloating point
  2200.     (PowerMops only) FP sine.
  2201.  
  2202. FSINH  ( PPC/ ( -- ) ( F: r1 -- r2 ) )
  2203.         FloatingPoint          zFloating point
  2204.     (PowerMops only) FP sinh.
  2205.  
  2206. FSP!  ( -- )
  2207.         Stack          pnuc1
  2208.     PowerMops only. Clears the floating point stack.
  2209.  
  2210. FSP0  ( -- n )
  2211.         Compiler          Nuc2.asm/setup
  2212.     A value. The address of the base of the floating point stack.
  2213.  
  2214. FSQRT  ( r -- sqrt )
  2215.     PowerMops: ( -- ) ( F: r -- sqrt )
  2216.         FloatingPoint          floating point/zFloating point
  2217.         
  2218.  
  2219. FSQRT  ( PPC/ ( -- ) ( F: r1 -- r2 ) )
  2220.         FloatingPoint          zFloating point
  2221.     (PowerMops only) Square root.
  2222.  
  2223. FTAN  ( PPC/ ( -- ) ( F: r1 -- r2 ) )
  2224.         FloatingPoint          zFloating point
  2225.     (PowerMops only) FP tangent.
  2226.  
  2227. FTANH  ( PPC/ ( -- ) ( F: r1 -- r2 ) )
  2228.         FloatingPoint          zFloating point
  2229.     (PowerMops only) FP tanh.
  2230.  
  2231. FTUCK  ( r1 r2 -- r2 r1 r2 )
  2232.     PowerMops: ( -- ) ( F: r1 r2 -- r2 )
  2233.         FloatingPoint          floating point/pnuc1
  2234.     
  2235.  
  2236. FVALUE  ( r --  : name )
  2237.     PowerMops: ( -- ) ( F: r -- )
  2238.         FloatingPoint          Nuc2.asm/qpCreate
  2239.     FP analog of value, can use prefix operators.
  2240.  
  2241. FWIND  ( -- obj )
  2242.         system          Nuc2.asm/setup
  2243.     The Mops console window, class window.
  2244.  
  2245. FWIND?  ( -- b )
  2246.         system          Nuc2.asm/setup
  2247.     A value. True if we're using fWind.
  2248.  
  2249. FWINDACTIVE?  ( -- b )
  2250.         system          ObjInit/zObjinit
  2251.     A value. True if fWind is the front, active window.
  2252.  
  2253. G->L  ( point -- point' )
  2254.         Quickdraw          Event
  2255.     Convert a global point to a local point.
  2256.  
  2257. GENERAL  ( -- )
  2258.         OOP          Class/zClass
  2259.     Sets the "general" option on a class, which forces an ivar of that 
  2260.     class to be a general object with a class pointer (so it can be 
  2261.     late-bound to) even if it's within a record. Normally you should just 
  2262.     not put such ivars in a record, but using GENERAL gives a bit of extra 
  2263.     security, for classes for which you know that they will definitely be 
  2264.     late-bound to. (An attempt to late-bind to an ivar without a class 
  2265.     pointer will give the "not an object" error at run time, which isn't 
  2266.     easy to track down.) Note that indexed classes are always general 
  2267.     anyway. Also if there's a message sent to [self] somewhere in one of 
  2268.     the methods, we know that the class *must* be general, so in this case 
  2269.     we simply set the general attribute. But note that GENERAL classes may 
  2270.     not be used to map ivars to Mac toolbox calls because the class header 
  2271.     information will be included.
  2272.  
  2273. GestaltAvail?  ( -- b )
  2274.         System          Nuc2.asm/pnuc1
  2275.     (68k Mops) Set True by the startup code if the Gestalt trap is 
  2276.     available. (PowerMops) Always returns True, since Gestalt is always 
  2277.     available on the PowerPC.
  2278.  
  2279. GETDIRID  ( -- dirID )
  2280.         Files          Files/pFiles
  2281.     Returns the dirID of the last directory opened by a standard file call. 
  2282.     This is merely the contents of the Mac global variable CurDirStore.
  2283.  
  2284. GETRES  ( type resID -- handle )
  2285.         Resources          Base/pBase
  2286.     Calls GetResource.
  2287.  
  2288. GETSPACE  ( -- )
  2289.         System          Nuc.asm/pnuc1
  2290.     A system vector.
  2291.  
  2292. GETSTRING  ( id -- addr len )
  2293.         Resources          Base/pBase
  2294.     Gets the string from the mops.rsrc file with the given resource ID.
  2295.  
  2296. GOTOXY  ( x y -- )
  2297.         QuickDraw          Nuc2.asm/pnuc2
  2298.     Calls toolbox MoveTo.
  2299.  
  2300. GOTPARMS?  ( -- rc )
  2301.         Events          Nuc2.asm
  2302.     This can be called at the end of a handler, to check if we got all the 
  2303.     parameters.
  2304.  
  2305. GRAFPORT  ( --  : name )
  2306.         Quickdraw          QD
  2307.     A standard class. Used to map into the QuickDraw GraphPort record. But 
  2308.     note that most record members are not named.
  2309.  
  2310. HANDLE  ( --  : name )
  2311.         OOP          Struct/pStruct
  2312.     A standard class.
  2313.  
  2314. HANDLEARRAY  ( #elems --  : name )
  2315.         OOP          Struct/pStruct
  2316.     A standard class. HANDLEARRAY and HANDLELIST are for the implementation 
  2317.     of collections of heap-based objects. HandleArray has normal array 
  2318.     properties. Use HandleList if the number of elements may grow 
  2319.     arbitrarily large, and if indexing isn't so important. HandleArray also 
  2320.     includes methods to allow the array to be used as a stack - needed for 
  2321.     FileList.
  2322.  
  2323. HANDLELIST  ( #elems --  : name )
  2324.         OOP          Struct/pStruct
  2325.     A standard class. HANDLELIST allows the implementation of a list of 
  2326.     heap-based objects. Unlike HANDLEARRAY, the list can be of indefinite 
  2327.     length. We use a heap block to store the handles to the objects 
  2328.     contiguously, rather than have a separate block for each handle and 
  2329.     link them together. This saves on memory overhead and reduces the 
  2330.     number of memory manager calls. It also reflects the assumption that 
  2331.     insertions and deletions into the middle of the list will be 
  2332.     infrequent, as these could be more inefficient than with a linked 
  2333.     scheme. We expect that elements will normally be added to the end, and 
  2334.     probably not removed at all, or not very often.
  2335.  
  2336. HASH  ( str255 -- n )
  2337.         Compiler          Nuc2.asm/pnuc1
  2338.     Hashes the str255 format string into a 32-bit hash value. Names of 
  2339.     selectors and instance variables are hashed to conserve space and speed 
  2340.     up searches.
  2341.  
  2342. HEADER  ( -- )
  2343.         compiler          Nuc2.asm/pnuc4
  2344.     Creates a dictionary header using the next word in the input stream.
  2345.  
  2346. HEADROOM  ( -- n )
  2347.         Compiler          Nuc2.asm/pnuc1
  2348.     On the 68k, returns the distance from DP to the top of the A4 
  2349.     addressing range - code will be a little less efficient above this 
  2350.     range. In PowerMops we return the distance from CDP to the top of the 
  2351.     mainCode addressing range - that's probably somewhat useful, though the 
  2352.     distance from DP to the top of the mainData addressing range would be 
  2353.     useful as well.
  2354.  
  2355. HERE  ( -- addr )
  2356.         Compiler          Nuc2.asm/pnuc1
  2357.     Returns the address of the next available memory location in the 
  2358.     dictionary, or in PowerMops, the address of the next available location 
  2359.     in the data area.
  2360.  
  2361. HEX  ( -- )
  2362.         NumericConversion          Nuc2.asm/pnuc1
  2363.     Sets base to 16.
  2364.  
  2365. HIDE  ( -- )
  2366.         Compiler          Nuc2.asm/pnuc4
  2367.     Hides the last dictionary header so that FIND won't find it. REVEAL 
  2368.     brings it back again. Use this if you want the previous use of the 
  2369.     name, i.e. if you DON'T want recursion.
  2370.  
  2371. HidePen  ( -- )
  2372.         Quickdraw          QD
  2373.     A direct call to HidePen.
  2374.  
  2375. HL-EVT  ( -- false )
  2376.         Events          Event
  2377.     An action word for fevent. Handles High-level events. Several vects are 
  2378.     involved.
  2379.  
  2380. HLD  ( -- addr )
  2381.         System          Nuc2.asm/pnuc1
  2382.     This value is the address of the latest Hold character during numeric 
  2383.     output conversion.
  2384.  
  2385. HLD  ( -- addr )
  2386.         system          Nuc2.asm/pnuc1
  2387.     The address of the next character position in the numeric string being 
  2388.     generated.
  2389.  
  2390. HLEventVEC  ( -- )
  2391.         Events          Event
  2392.     A vect. Called for generic high-level events. Default is vfalse.
  2393.  
  2394. HOLD  ( c -- )
  2395.         NumericConversion          Nuc2.asm/pnuc2
  2396.     Inserts the character into a string being built by a <# ... #> 
  2397.     sequence. standard
  2398.  
  2399. HOME  ( -- )
  2400.         Console          Nuc2.asm/pnuc2
  2401.     Moves the cursor to the upper left corner of the current window.
  2402.  
  2403. I  ( -- n )
  2404.         ControlStructures          Nuc2.asm/pnuc1
  2405.     Fetches the current loop index. (The loop index is stored in a machine 
  2406.     register.)
  2407.  
  2408. I->L  ( 16-bit-number -- 32-bit-number )
  2409.         Toolbox          Nuc2.asm
  2410.     (68k Mops only) Converts the 16-bit half-cell on top of stack into a 
  2411.     full 32-bit Mops cell, extending the sign bit. i->l is useful in 
  2412.     handling the result from Macintosh ROM routines that return a 16-bit 
  2413.     signed integer on the stack. i->l differs from Extend in that i->l 
  2414.     pushes two bytes onto the stack while extending the sign, whereas 
  2415.     extend only extends the sign of a 16-bit integer contained in the 
  2416.     32-bit cell on top of stack, converting it into a 32-bit signed 
  2417.     integer. Word0, a related word, pushes two zero bytes onto the stack.
  2418.  
  2419. I/O_ERR  ( err# -- )
  2420.         Errors          Base/zBase
  2421.     A forward definition to be called when there is an i/o error.
  2422.  
  2423. IBEAMCURS  ( -- )
  2424.         Quickdraw          QD
  2425.     Sets the cursor to this.
  2426.  
  2427. IDXBASE  ( -- addr )
  2428.         OOP          Nuc2.asm/pnuc1
  2429.     Returns the address of the beginning of the current indexed object's 
  2430.     indexed data area. Gives an error if there's no current object, or if 
  2431.     it isn't indexed.
  2432.  
  2433. IF  ( ? -- )
  2434.         ControlStructures          Nuc2.asm/qpCond
  2435.     Marks the beginning of an IF... THEN or IF ... ELSE ... THEN program 
  2436.     flow sequence. Gives an error if there's no current object, or if it 
  2437.     isn't indexed.
  2438.  
  2439. IFA  ( class -- ifa )
  2440.         OOPprimitive          Class/qpClass
  2441.     Given a pointer to a class, returns the ivar field address.
  2442.  
  2443. IMMEDIATE  ( -- )
  2444.         Compiler          Nuc2.asm/cg7
  2445.     Standard Forth word
  2446.  
  2447. INDEXED  ( n -- )
  2448.         OOP          Class/zClass
  2449.     Sets a class and its subclasses to indexed, with elements of width n 
  2450.     bytes. Used after the superclass declaration list when defining a new 
  2451.     class. Note that when instantiating an indexed class, you MUST precede 
  2452.     the instance name with the number of elements you wish that instance to 
  2453.     have. Also note that all indexed classes are automatically declared to 
  2454.     be GENERAL, so you may not used indexed classes to map into toolbox 
  2455.     calls. Also, n must be < 32K (see LARGE).
  2456.  
  2457. INDEXED-OBJ  ( --  : name )
  2458.         OOP          Struct/pStruct
  2459.     A standard class. Class INDEXED-OBJ is the generic superclass for all 
  2460.     arrays. Here we define the general indexed methods, which apply 
  2461.     regardless of indexed width.
  2462.  
  2463. INFRONT  ( -- -1 )
  2464.         Windows          Window
  2465.     A constant.
  2466.  
  2467. INITFONT  ( -- )
  2468.         System          Window
  2469.     Initializes text characteristics.
  2470.  
  2471. INIT_ACTIONS  ( -- )
  2472.         FrontEnd          Struct/pStruct
  2473.     A system object, of class x-col, with 8 elements. Any special run-time 
  2474.     initialization can be done conveniently by adding the appropriate words 
  2475.     to the x-col INIT_ACTIONS. These words will be executed on startup via 
  2476.     EXTRA_INITS, right after OBJINIT.
  2477.  
  2478. INLINE{  ( --  : word ... } )
  2479.         Compiler          Args/cg6
  2480.     Commences an inline definition (must come straight after the : <name> 
  2481.     or :m <name>). Allows faster execution. We assume that inline 
  2482.     definitions will be fairly short, and are to be optimized for speed. 
  2483.     The text within the inline{ and the } is saved and recompiled each time 
  2484.     the inline word is to be compiled, so that no call and return is needed.
  2485.  
  2486. INSTEAD  ( c-old c-new -- )
  2487.         Strings          StrUtilities/zArgs
  2488.     May be used just after a SCON is defined. Within the SCON, it replaces 
  2489.     any occurrences of c-old with c-new. This operation is useful for 
  2490.     creating SCONs containing special characters such as tab.
  2491.  
  2492. INSTLD?  ( -- b )
  2493.         system          Nuc2.asm/setup
  2494.     A value. Set True if an installed application is running. Can be 
  2495.     useful. Very useful.
  2496.  
  2497. INTERPRET  ( -- )
  2498.         System          Nuc1.asm/cg7
  2499.     INTERPRET is the interpretation loop. Words from the input stream are 
  2500.     interpreted until the input is exhausted.
  2501.  
  2502. INTRP1  ( --  : word )
  2503.         Compiler          Nuc2.asm/cg7
  2504.     Interprets one word/number from the input stream.
  2505.  
  2506. INVERT  ( n1 -- n2 )
  2507.         Logical          Nuc2.asm/pnuc1
  2508.     Inverts all the bits in n1. Synonym to NOT.
  2509.  
  2510. IOWAIT  ( -- )
  2511.         Files          Files/pFiles
  2512.     Repeatedly calls busy and pause, will exit if busy returns false.
  2513.  
  2514. IVARLEN  ( obj -- n )
  2515.         OOPprimitive          Class/qpClass
  2516.     Given a class pointer, returns the ivar data length. An alias for DLEN.
  2517.  
  2518. ivFind  ( str-addr -- ^ivar offs xdispl-offs true |  -- str-addr false )
  2519.         Compiler          Class/qpClass
  2520.     Called when we've parsed a selector. It determines if the next word is 
  2521.     an ivar. Note: if found, <findIV> returns to us the equivalent of the 
  2522.     cfa of a method, which for ivars, is the addr of the class pointer.
  2523.  
  2524. ivFindM  ( selID ^ivar -- offs xt )
  2525.         OOPprimitive          Class/qpClass
  2526.     Finds a method's xt given a selID and an ivar address.
  2527.  
  2528. J  ( -- n )
  2529.         ControlStructures          Nuc2.asm/pnuc1
  2530.     Index value for the next outer DO ... LOOP control structure.
  2531.  
  2532. K  ( -- n )
  2533.         ControlStructures          Nuc2.asm/pnuc1
  2534.     Index value for the 2nd outer DO ... LOOP control structure.
  2535.  
  2536. KEY  ( -- c )
  2537.         Events           Nuc.asm/pnuc2
  2538.     A system vector. The action of key is normally (key).
  2539.  
  2540. KEY!  ( -- )
  2541.         Events          Nuc.asm
  2542.     (68k Mops only) A system vector. Restores default action for KEY. (In 
  2543.     PowerMops we never change it, so we don't need to restore it.)
  2544.  
  2545. KEY-EVT  ( -- keywd modswd T  |  -- F )
  2546.         Events          Event
  2547.     An action word for fevent. Gets key value if true. Handles command-key 
  2548.     menu actions. Does not handle "normal" key actions, that is up to your 
  2549.     code.
  2550.  
  2551. KEY?  ( -- b )
  2552.         Events          Nuc2.asm/pnuc2
  2553.     Performs a 40 ?Event. Synonym for ?TERMINAL. Used in class Mouse, and 
  2554.     in the utility word ?pause to test for a keyboard event.
  2555.  
  2556. KONST  ( -- n  : konstName )
  2557.         ToolBox          tool.txt/zCallsMod.txt
  2558.     Returns a Mac system constant. For example, konst kAEQuitApplication 
  2559.     will return the event id 'quit' on the stack.
  2560.  
  2561. L->G  ( point -- point' )
  2562.         Quickdraw          Event
  2563.     Convert a local point to a global point.
  2564.  
  2565. L>NAME  ( lfa -- nfa )
  2566.         compiler          Nuc2.asm/pnuc1
  2567.     Converts a link field address to a name field address.
  2568.  
  2569. LARGE  ( -- )
  2570.         OOP          Class/zClass
  2571.     (68k Mops) Sets the "large" option on an indexed class, allowing the 
  2572.     number of elements to be greater than 32k. (PowerMops) The number of 
  2573.     elements can always be greater than 32k, so LARGE is ignored.
  2574.  
  2575. latest  ( -- nfa-1 )
  2576.         Compiler          Nuc.asm/pnuc1
  2577.     A value. Leaves the nfa of the last defined word.
  2578.  
  2579. LEAVE  ( -- )
  2580.         ControlStructures          Nuc2.asm/qpCond
  2581.     There is also a change to LEAVE, which is now a "leaping LEAVE". When 
  2582.     LEAVE is executed, it now causes the loop to be left immediately, 
  2583.     rather than waiting until the next time LOOP is encountered.
  2584.  
  2585. LENGTH  ( addr -- addr+2 len )
  2586.         Strings          Nuc2.asm/pnuc1
  2587.     Like COUNT, but uses a 2-byte length.
  2588.  
  2589. LENGTH:  ( -- len )
  2590.         OOP          Class/zClass
  2591.     A method. Gets total length of object. Length will include class header 
  2592.     information only if class is of type GENERAL. Otherwise, length is 
  2593.     merely the length of the ivar data field(s).
  2594.  
  2595. LIMIT  ( -- n )
  2596.         OOP          Nuc2.asm/pnuc1
  2597.     Returns the maximum numbr of elements of the current indexed object.
  2598.  
  2599. Line  ( dh dv -- )
  2600.         Quickdraw          QD
  2601.     A direct call to Line.
  2602.  
  2603. LineTo  ( h v -- )
  2604.         Quickdraw          QD
  2605.     A direct call to LineTo.
  2606.  
  2607. LINK>  ( lfa -- cfa )
  2608.         compiler          Nuc2.asm/pnuc1
  2609.     Converts a link field address to a code field address.
  2610.  
  2611. LIT  ( n -- )
  2612.         Compiler          Base/zBase
  2613.     A state-smart version of LITERAL. Corresponds to LITERAL in Fig-Forth 
  2614.     or original Neon, whereas our present LITERAL is Forth-83.
  2615.  
  2616. LITERAL  ( n -- )
  2617.         System          Nuc2.asm/cg5
  2618.     standard
  2619.  
  2620. LITW  ( n -- )
  2621.         Toolbox          Base
  2622.     (68k Mops only) Used for toolbox calls. Pushes a 16-bit literal.
  2623.  
  2624. LN  ( r1 -- r2 )
  2625.         FloatingPoint          floating point
  2626.     (68k Mops only) Natural logarithm.
  2627.  
  2628. LN(10)  ( -- r )
  2629.         FloatingPoint          floating point
  2630.     (68k Mops only) An fcon. Returns the natural logarithm of 10, 2.302...
  2631.  
  2632. LN1  ( r1 -- r2 )
  2633.         FloatingPoint          floating point
  2634.     (68k Mops only) ln(1+x)
  2635.  
  2636. LOCAL  ( --  : name { parm1 parm2 \ loc1 loc2 } )
  2637.         Compiler          Args/zArgs
  2638.     Begins definition of a local section. Within a local section, all words 
  2639.     have access to the parms/locals.
  2640.  
  2641. LOG  ( r1 -- r2 )
  2642.         FloatingPoint          floating point
  2643.     (68k Mops only) Log base 10 of given float.
  2644.  
  2645. LOG2  ( r1 -- r2 )
  2646.         FloatingPoint          floating point
  2647.     (68k Mops only) Computes the base 2 logarithm.
  2648.  
  2649. LOG21  ( r1 -- r2 )
  2650.         FloatingPoint          floating point
  2651.     (68k Mops only) log2(1+x). I don't think LOG21 is a very helpful name 
  2652.     (pure computerese), but I guess we're stuck with it.
  2653.  
  2654. LONGWORD  ( --  : name )
  2655.         OOP          Struct/zStruct
  2656.     A standard class. Generic superclass for var, handle etc.
  2657.  
  2658. LOOP  ( -- )
  2659.         ControlStructures          Nuc2.asm/qpCond
  2660.     Marks end of DO ... LOOP structure.
  2661.  
  2662. LSHIFT  ( n1 n2 -- n3 )
  2663.         Arithmetic          Nuc2.asm/pnuc1
  2664.     Shifts n1 to the left by n2 bit positions. e.g. 3 2 << will yield 12 
  2665.     (0011) -> (1100). ANSI synonym for <<.
  2666.  
  2667. M*  ( n1 n2 -- d )
  2668.         arithmetic          longmath/pnuc1
  2669.     Mixed multiply.
  2670.  
  2671. M/MOD  ( d n -- rem quot )
  2672.         Arithmetic          pnuc1
  2673.     PowerMops only. Signed mixed division of a 64-bit dividend by a 32-bit 
  2674.     divisor, giving 32-bit remainder and quotient.
  2675.  
  2676. MAKEINT  ( 32-bit-num -- 16-bit-num )
  2677.         Toolbox          Nuc2.asm
  2678.     (68k Mops only) Drops the higher 16 bits of the number on top of the 
  2679.     stack. This is used for Toolbox calls that require an Int value.
  2680.  
  2681. MARKER  ( --  : name )
  2682.         Compiler          Base/zBase
  2683.     Now preferred to FORGET. MARKER <name> defines a word <name> that when 
  2684.     executed, returns the dictionary to its state just before MARKER was 
  2685.     executed. In PowerMops this allows us to reset the data area as well as 
  2686.     the code area. You can still use FORGET, but this only resets the code 
  2687.     area. We recommend you now use MARKER.
  2688.  
  2689. MARK_FILE  ( -- )
  2690.         Compiler          Files/pFiles
  2691.     Internal Mops use only. Called when we're starting to load a source 
  2692.     file. Places a marker in the dictionary so that we can locate the 
  2693.     source file corresponding to a particular word.
  2694.  
  2695. MAX  ( n1 n2 -- n3 )
  2696.         Arithmetic          Nuc2.asm/pnuc1
  2697.     n3 is the maximum of n1 and n2 (signed).
  2698.  
  2699. MAXDIC  ( -- n )
  2700.         Compiler          Nuc2.asm
  2701.     (68k Mops only) A value used by the startup code - set to the value 
  2702.     specified for the dictionary size in the Install dialog.
  2703.  
  2704. MBADDR  ( -- addr )
  2705.         Menus          Event
  2706.     We store our menubar reference here.
  2707.  
  2708. MBAR  ( --  : name )
  2709.         Menus          Menu
  2710.     A standard class. The Mops class for handling the menubar, contains an 
  2711.     array of up to 10 menu objects. The default Mops mbar object is 
  2712.     menubar, which is stored in the dicaddr object MBaddr.
  2713.  
  2714. MENU  ( --  : name )
  2715.         Menus          MenuMod.txt
  2716.     A standard class, subclass of x-array. The Mops object oriented 
  2717.     approach to handling menus.
  2718.  
  2719. MENUBAR  ( -- obj )
  2720.         Menus          Menu
  2721.     Our default mbar object, stored in MBaddr.
  2722.  
  2723. MFA  ( class -- mfa )
  2724.         OOPprimitive          Class/qpClass
  2725.     Given a pointer to a class, returns the methods field address.
  2726.  
  2727. MIN  ( n1 n2 -- n3 )
  2728.         Arithmetic          Nuc2.asm/pnuc1
  2729.     n3 is the minimum of n1 and n2 (signed).
  2730.  
  2731. MINHEAP  ( -- n )
  2732.         Compiler          Nuc2.asm
  2733.     (68k Mops only) A value used by the startup code - set to the value 
  2734.     specified for the heap size in the Install dialog.
  2735.  
  2736. MLOCAL  ( --  : name { parm1 parm2 \ loc1 loc2 } )
  2737.         Memory          Args
  2738.     Starts a local section for methods. See local.
  2739.  
  2740. MOD  ( n1 n2 -- rem )
  2741.         Arithmetic          Nuc2.asm/pnuc1
  2742.     Returns remainder of division of n1 by n2.
  2743.  
  2744. MOUSE  ( --  : name )
  2745.         Events          Event
  2746.     A system class for dealing eith the mouse and events. Our Mops mouse 
  2747.     object is theMouse.
  2748.  
  2749. MOUSE-EVT  ( -- false )
  2750.         Events          Event
  2751.     An action word for fevent. Handles mouse events.
  2752.  
  2753. MouseMoved  ( -- )
  2754.         Events          Event
  2755.     A vect. Called for mouse moved.
  2756.  
  2757. MOVE  ( src dest cnt -- )
  2758.         Memory          Nuc2.asm/pnuc2
  2759.     As for CMOVE, but n may be anything. Implemented by calling the toolbox 
  2760.     routine BlockMove/BlockMoveData. This gives optimized handling of 
  2761.     longer moves (n > 20 say). Also accounts for situations where the 
  2762.     source and destination areas overlap. If you want byte propagation 
  2763.     effects, use CMOVE instead. But what would you want this for, anyway, 
  2764.     since we have FILL?
  2765.  
  2766. MOVEPEN  ( dv dh -- )
  2767.         Quickdraw          QD
  2768.     A direct call to Move.
  2769.  
  2770. MoveTo  ( h v -- )
  2771.         Quickdraw          QD
  2772.     A direct call to MoveTo.
  2773.  
  2774. MSELECT  ( point -- item# menuID )
  2775.         Menus          Menu
  2776.     Calls menu manager MenuSelect to track a menu selection.
  2777.  
  2778. MSG#  ( --  : lit )
  2779.         Errors          Base/zBase
  2780.     Displays given string number (a literal) from the mops.rsrc file, 
  2781.     preceded by "Msg#..."
  2782.  
  2783. MWORD  ( -- addr )
  2784.         Lowstrings          Nuc2.asm/pnuc2
  2785.     "Mops word". Called by DEFINED? which is called by INTERPRET. Calls 
  2786.     WORD with a blank as delimiter, and converts the string to upper case. 
  2787.     Leaves counted string at addr (will be HERE).
  2788.  
  2789. MyDoc  ( -- addr len )
  2790.         Frontend          Files/pFiles
  2791.     Front end support for loading files.
  2792.  
  2793. MyDocName  ( -- str255 )
  2794.         Frontend          Files/pFiles
  2795.     A variable with 28 bytes allotted.
  2796.  
  2797. N,  ( addr len -- )
  2798.         Compiler          Nuc2.asm/pnuc3
  2799.     Places the bytes designated by (addr len) in the dictionary where DP 
  2800.     points, and adds len to DP.
  2801.  
  2802. N>COUNT  ( nfa  -- addr len )
  2803.         Compiler          Nuc2.asm/pnuc2
  2804.     Returns the address and length of a name field, suitable for use by 
  2805.     "type".
  2806.  
  2807. N>LINK  ( nfa -- lfa )
  2808.         compiler          Nuc2.asm/pnuc1
  2809.     Converts a name field address to a link field address.
  2810.  
  2811. NAME>  ( nfa -- cfa )
  2812.         compiler          Nuc2.asm/pnuc1
  2813.     Converts a name field address to a code field address.
  2814.  
  2815. NAME?  ( addr -- addr b )
  2816.         Compiler          Nuc2.asm/pnuc4
  2817.     Returns True if the passed-in addr appears to be an xt with a 
  2818.     corresponding valid name field.
  2819.  
  2820. NEED  ( --  : filename )
  2821.         System          Extrasmod.txt/zExtrasmod.txt
  2822.     Will load the named file, if the file is in our path definition. Put 
  2823.     NEED XXX at the start of a file that requires XXX to be already loaded. 
  2824.     If the word XXX is not defined, a file of that name is loaded. Note 
  2825.     that only one blank or tab is allowed between NEED and the filename. 
  2826.     This is because we use WORD" to read the filename, so that names with 
  2827.     embedded blanks are allowed.
  2828.  
  2829. NEG>  ( n --  : word )
  2830.         Arithmetic           Args/zArgs
  2831.     A prefix operator, which negates. Use for values and named parameters 
  2832.     and locals. Also works for floats.
  2833.  
  2834. NEGATE  ( n -- -n )
  2835.         Arithmetic          Nuc2.asm/pnuc1
  2836.     Changes the sign of n.
  2837.  
  2838. NEXT  ( -- )
  2839.         ControlStructures          Nuc2.asm/qpCond
  2840.     Marks end of a FOR ... NEXT loop. See FOR.
  2841.  
  2842. NEXTEVENT  ( ^event mask -- b )
  2843.         Events          Nuc2.asm/pnuc2
  2844.     Calls WaitNextEvent if it's available, otherwise GetNextEvent (which 
  2845.     should only be on very old Macs).
  2846.  
  2847. NEXT_TASK  ( -- )
  2848.         Events          Event
  2849.     A vect. If multitasking is installed, this will be redirected to do a 
  2850.     task switch.
  2851.  
  2852. NIF  ( ? -- )
  2853.         Controlstructures          Nuc2.asm/qpClass
  2854.     Like IF except execution occurs when ? is zero.
  2855.  
  2856. NILH  ( -- $FFA00101 )
  2857.         Memory          Nuc2.asm/setup
  2858.     A constant. The value we use for a nil handle.
  2859.  
  2860. NILP  ( -- $FFA00103 )
  2861.         Memory          Nuc2.asm/setup
  2862.     A constant. The value we use for a nil pointer.
  2863.  
  2864. NIP  ( n1 n2 -- n2 )
  2865.         Stack          Nuc2.asm/pnuc1
  2866.     Removes stack item just under top.
  2867.  
  2868. NOMEM  ( -- )
  2869.         Errors          Base/zBase
  2870.     A forward definition to be called when (not if!) we run out of memory.
  2871.  
  2872. NOT  ( n1 -- n2 )
  2873.         Logical          Nuc2.asm/pnuc1
  2874.     Inverts all the bits in n1. Synonym to INVERT.
  2875.  
  2876. NOT>  ( n --  : word )
  2877.         Arithmetic           Args/zArgs
  2878.     A prefix operator, which logically NOTs (inverts all bits). Use for 
  2879.     values and named parameters and locals. Not for floats.
  2880.  
  2881. NULL  ( -- )
  2882.         System          Nuc2.asm/setup
  2883.     A word that does nothing.
  2884.  
  2885. NULL-EVT  ( -- false )
  2886.         Events          Event
  2887.     An action word for fevent. Will send late bound idle: to the actW, if 
  2888.     it is non-zero.
  2889.  
  2890. NULLOSSTR  ( -- xt )
  2891.         System          Base/zBase
  2892.     
  2893.  
  2894. NUM?  ( addr -- n true  |  -- false )
  2895.         Console          Nuc2.asm/pnuc2
  2896.     
  2897.  
  2898. NUMBER  ( addr -- n )
  2899.         compiler          Nuc2.asm/pnuc2
  2900.     Attempts to convert the counted string at addr to a number, by calling 
  2901.     COUNT followed by >NUM?. If the string isn't a number (>NUM? returned 
  2902.     false), we give the "undefined word" error. If the number contains a 
  2903.     ".", n will be double-length.
  2904.  
  2905. NUNTIL  ( ? -- )
  2906.         ControlStructures          Nuc2.asm/qpCond
  2907.     Similar to until. Stop if ? is-zero.
  2908.  
  2909. NWHILE  ( ? -- )
  2910.         ControlStructures          Nuc2.asm/qpCond
  2911.     Similar to while. Continue if ? is zero.
  2912.  
  2913. OBJ>  ( addr -- xt | 0 )
  2914.         OOPprimitive          Class/qpClass
  2915.     Takes an obj's base addr, and returns the xt of its dic entry, or zero 
  2916.     if none.
  2917.  
  2918. OBJ?  ( ?obj -- ?obj class  |  -- ?obj 0 )
  2919.         Compiler          Nuc2.asm/pnuc4
  2920.     General test for an object. Not completely rigorous, so we shouldn't 
  2921.     use it in a TRAV, but pretty good nevertheless. If it is an object, the 
  2922.     class is left in theClass. We do assume the passed-in value may not be 
  2923.     a legal address at all, since we want to use this word in stack dumping.
  2924.  
  2925. OBJECT  ( -- class )
  2926.         OOP          Class/qpClass
  2927.     The root class of all classes. Only used as a declared superclass when 
  2928.     defining a new class. Note that class object has the pre-defined 
  2929.     methods class:, .id:, .class:, addr:, length:, copyto:, classinit:, 
  2930.     release:, dump:, and print:. So ALL objects possess these methods. Some 
  2931.     of these methods do nothing, for class object.
  2932.  
  2933. ObjFindM  ( selID obj -- xt offs xdispl-offs )
  2934.         OOPprimitive          Class/qpClass
  2935.     Finds a method's xt given a selID and an obj addr. Results are as for 
  2936.     <findM>.
  2937.  
  2938. OBJHANDLE  ( --  : name )
  2939.         OOP          Struct/pStruct
  2940.     A standard class. An OBJHANDLE is a handle that points to an object in 
  2941.     the heap.
  2942.  
  2943. OBJINIT  ( -- )
  2944.         System          Nuc.asm/zObjinit
  2945.     (68k) A system vector. Normally contains sysinit, defined in file 
  2946.     Objinit. Does class-related initialization at startup. In PowerMops we 
  2947.     just re-resolve the forward definition RUN (see file zObjinit).
  2948.  
  2949. OBJLEN  ( -- n )
  2950.         OOPprimitive          Class/qpClass
  2951.     Returns total data length of current object.
  2952.  
  2953. OBJPTR  ( --  :  name )
  2954.         OOP          Nuc2.asm/qpCreate
  2955.     An object pointer is a "low-level" entity, rather like a value. The 
  2956.     syntax for object pointers is: objPtr anObjptr class_is theClass
  2957.  
  2958. OBJ_ARRAY  ( #elems --  : name )
  2959.         OOP          Struct/pStruct
  2960.     A standard class. OBJ_ARRAY is a generic superclass which makes it easy 
  2961.     to generate an array of objects of a given class. Just define a new 
  2962.     class which multiply inherits from the given class (or classes) and 
  2963.     OBJ_ARRAY (which must come last). This will add an indexed section to 
  2964.     each object of the new class, with elements wide enough to contain 
  2965.     objects of the original class. Then SELECT: "switches in" the selected 
  2966.     element to be the "current" element, and all the normal methods of the 
  2967.     class can then be used. Note the use of"32767 indexed" in the class 
  2968.     definition.
  2969.  
  2970. OF  ( n1 n2 --  | n1 )
  2971.         ControlStructures          Base/zBase
  2972.     Use within a CASE structure. Yields n1 and jumps to beyond next ENDOF 
  2973.     if no match.
  2974.  
  2975. OK  ( -- )
  2976.         Compiler          Nuc2.asm/cg7
  2977.     Prints the Mops prompt, commonly 0->.
  2978.  
  2979. OK?  ( rc -- )
  2980.         Files          Base/zBase
  2981.     A useful word to use after an I/O operation.
  2982.  
  2983. OpenAppVec  ( -- code True  |  -- False )
  2984.         Events/pnuc1          Nuc.asm
  2985.     As set up in Mops, OpenAppVec simply returns False and does nothing 
  2986.     else.
  2987.  
  2988. OpenDocVec  ( -- code True  |  -- False )
  2989.         Events/pnuc1          Nuc.asm
  2990.     OpenDocVec finds the number of files in the given list of files, and 
  2991.     puts the number in the value #DocsToOpen. It then handles each file in 
  2992.     the given list fFcb, then calling the sufficient for your appropriately.
  2993.  
  2994. OPENMR  ( -- )
  2995.         Resources          Base/pBase
  2996.     open the Mops system resource file (mops.rsrc) if necessary.
  2997.  
  2998. OpenResFile  ( addr len -- )
  2999.         Resources          Base/pBase
  3000.     Opens named resource file.
  3001.  
  3002. OPT?  ( -- b )
  3003.         System          Nuc2.asm
  3004.     (68k Mops only) A value. Disables optimization if set False. Normally 
  3005.     True. Set it False if you have an obscure bug, to check if the 
  3006.     optimization is generating invalid code.
  3007.  
  3008. OR  ( n1 n2 -- or )
  3009.         Logical          Nuc2.asm/pnuc1
  3010.     Bitwise OR.    
  3011.  
  3012. OR>  ( n --  : word )
  3013.         Arithmetic           Args/zArgs
  3014.     A prefix operator, which does a bitwise OR with n. Use for values and 
  3015.     named parameters and locals. Not for floats.
  3016.  
  3017. ORDERED-COL  ( #elems --  : name )
  3018.         OOP          Struct/pStruct
  3019.     A standard class. Ordered-Collection is a collection of 4-byte cells. A 
  3020.     subclass of (col) and array.
  3021.  
  3022. OS-EVT  ( -- false )
  3023.         Events          Event
  3024.     An action word for fevent. Handles operating system events by calling 
  3025.     various vects.
  3026.  
  3027. OUT  ( -- n )
  3028.         system          Nuc2.asm/pnuc1
  3029.     Counts up by one for each character EMITted.
  3030.  
  3031. OVER  ( n1 n2 -- n1 n2 n1 )
  3032.         Stack          Nuc2.asm/pnuc1
  3033.     Same as 2 pick.
  3034.  
  3035. PACK  ( x y  -- x:y )
  3036.         Toolbox          Nuc2.asm/QD
  3037.     Packs two 32-bit signed numbers into one 32-bit number. Only the lower 
  3038.     16 bits of x and y are used. You can use pack to convert a coordinate 
  3039.     point into a Toolbox-compatible point. Even in PowerMops we still need 
  3040.     PACK and UNPACK, since the Toolbox takes and returns a packed Point in 
  3041.     a couple of places.
  3042.  
  3043. PAD  ( -- addr )
  3044.         system          Nuc2.asm/setup
  3045.     Returns the address of the text output buffer, a temporary area of 
  3046.     memory of 256 bytes. Mops uses PAD to hold information (text, numbers) 
  3047.     for intermediate processing. You may use it to the same end, but be 
  3048.     aware that output words like emit and type may interfere by using pad 
  3049.     as well.
  3050.  
  3051. PARSE-DLM-STR  ( addr1 addr2 len -- b )
  3052.         Lowstrings          Nuc2.asm/pnuc2
  3053.     Scans the source for a string delimited at the start and end by c. 
  3054.     Everything is skipped before the first delimiter. If the source gets 
  3055.     exhausted in the process, REFILL is called to get more.
  3056.  
  3057. PARSE-SRC  ( c -- addr len )
  3058.         Lowstrings          Nuc2.asm/pnuc2
  3059.     Scans the source for delimiter c. Returns the addr and len of the 
  3060.     parsed string, and updates the source.
  3061.  
  3062. PARSE-WORD  ( c -- addr len )
  3063.         LowStrings          Nuc2.asm/pnuc2
  3064.     As for PARSE-SRC, but any consecutive initial delimiters are skipped. 
  3065.     If the input is exhausted in the process, REFILL is called to get more.
  3066.  
  3067. PATCHES_DONE  ( -- )
  3068.         Compiler          Nuc2.asm
  3069.     (68k Mops only) If you ever need to patch instructions, call this when 
  3070.     you're finished. It flushes the instruction cache if necessary to make 
  3071.     sure that the new instructions will really be executed. PATCH and 
  3072.     (PATCH) call it already, so if you are using these, you don't need to 
  3073.     call Patches_done. (On the PowerPC, we use FIX_CACHES.)
  3074.  
  3075. PATTERN  ( --  : name )
  3076.         Quickdraw          QD
  3077.     A system class, subclass of resource.
  3078.  
  3079. PAUSE  ( -- )
  3080.         Events          Nuc.asm/pnuc1
  3081.     A system vector, normally contains (pause), defined in file Frontend. 
  3082.     PAUSE should be called at strategic intervals in all applications, 
  3083.     unless Key is being called frequently. Pause normally calls next: 
  3084.     fEvent which allows a task switch to be done under MultiFinder, and 
  3085.     which also handles any pending events for this task, such as window 
  3086.     updates. Remember to disable any menus etc. that you don't want to 
  3087.     execute in this situation! Unexpected re-entrancy is a good way to bomb!
  3088.  
  3089. PI  ( -- r )
  3090.         FloatingPoint          floating point
  3091.     (68k Mops only) An fcon. Returns 3.1415...
  3092.  
  3093. PICK  ( ... idx -- ... n )
  3094.         Stack          Nuc2.asm/pnuc1
  3095.     Given a zero-based index into the stack, will copy the requested cell 
  3096.     to the top of the stack. Stack depth increases by one. 0 pick is 
  3097.     equivalent to dup.
  3098.  
  3099. PLACE  ( addr1 len addr2 -- )
  3100.         Lowstrings          Nuc2.asm/pnuc2
  3101.     Converts string ( addr1 len ) to a counted string at addr2. Appends a 
  3102.     zero byte.
  3103.  
  3104. PLUSCURS  ( -- )
  3105.         Quickdraw          QD
  3106.     Sets the cursor to this.
  3107.  
  3108. POINT  ( --  : name )
  3109.         Quickdraw          QD
  3110.     A standard class for dealing with QuickDraw points. Note that Mops 
  3111.     prefers to treat all points and operations with points as 2 items on 
  3112.     the stack, rather than a single packed 32-bit number.
  3113.  
  3114. POPPORT  ( GrafPtr -- )
  3115.         Quickdraw          QD
  3116.     Calls SetPort.
  3117.  
  3118. POSTPONE  ( -- )
  3119.         Compiler          Nuc2.asm/qpCond
  3120.     Standard Forth word. Postpone xxxx compiles a call to the word xxxx, 
  3121.     even if xxxx is immediate.
  3122.  
  3123. PPC?  ( -- b )
  3124.         Compiler          Base/setup
  3125.     True if we're compiling PPC code
  3126.  
  3127. PRINT:  ( -- )
  3128.         OOP          Class/zClass
  3129.     A method. Use to display a class, default is just a DUMP:.
  3130.  
  3131. PrintDocVec  ( -- code True  |  -- False )
  3132.         Events          Nuc.asm/pnuc1
  3133.     As set up, Read1DocVec assumes the file is a Mops dictionary. 
  3134.     Read1DocVec must point to a routine which will read the file designated 
  3135.     by the file object fFcb, close it, and return a result on the stack. 
  3136.     True indicates the OpenDocVec loop can continue. False means the loop 
  3137.     must terminate. You could return False, for example, on an error, or 
  3138.     simply if your application can't accept more than one document open at 
  3139.     a time.
  3140.  
  3141. PRIVATE  ( -- )
  3142.         OOP          Class/zClass
  3143.     Use within a class definition. Makes the following methods private—that 
  3144.     is, they will be accessible from within this class or any of its 
  3145.     subclasses, but not from anywhere else. The criterion is simply that a 
  3146.     call to Self of Super may access a private method, but nothing else 
  3147.     can. Note that for this reason you can't late-bind to a private method, 
  3148.     even if you do it from within the class itself.
  3149.  
  3150. PROCESSOR  ( -- n )
  3151.         System          Nuc2.asm
  3152.     (68k only) A value. Set by a _Gestalt call in the startup code to the 
  3153.     number corresponding to the processor we are running on.
  3154.  
  3155. PTR  ( --  : name )
  3156.         OOP          Struct/pStruct
  3157.     A standard class. For toolbox pointers.
  3158.  
  3159. PUBLIC  ( -- )
  3160.         OOP          Class/zClass
  3161.     Makes the following methods public—that is, they will be accessible 
  3162.     from anywhere. PRIVATE and PUBLIC may be used any number of times 
  3163.     within the one class definition. Methods are initially public when a 
  3164.     class compilation starts.
  3165.  
  3166. PUSHPORT  ( -- GrafPtr )
  3167.         Quickdraw          QD
  3168.     Pushes the current Graphport onto the stack as a GrafPtr. Calls GetPort.
  3169.  
  3170. qd  ( -- addr )
  3171.         system          setup
  3172.     (PowerMops only) The base of the QuickDraw globals area.
  3173.  
  3174. QUERY  ( -- )
  3175.         Console          Nuc2.asm/pnuc2
  3176.     Inputs up to 128 characters from the keyboard until a carriage is 
  3177.     typed. Query puts the acquired text at the address TIB and sets the 
  3178.     variable >IN to zero.
  3179.  
  3180. QUIT  ( -- )
  3181.         Compiler          Nuc2.asm/cg7
  3182.     S4tandard
  3183.  
  3184. QuitAppVec  ( -- code True  |  -- False )
  3185.         Events          Nuc.asm/pnuc1
  3186.     The current setting for QuitAppVec is simply to call BYE. Your 
  3187.     application will probably want to do something a bit more intelligent.
  3188.  
  3189. QUITVEC  ( -- )
  3190.         System          Nuc.asm/pnuc1
  3191.     A system vector.
  3192.  
  3193. R>  ( -- n )
  3194.         ReturnStack          Nuc2.asm/qpCond
  3195.     Pops the top return stack value to the stack.
  3196.  
  3197. R@  ( -- n )
  3198.         ReturnStack          Nuc2.asm/qpCond
  3199.     Fetches the top return stack value to the stack. Does not pop the 
  3200.     return stack.
  3201.  
  3202. RA?  ( addr -- b )
  3203.         Compiler          Nuc2.asm/pnuc4
  3204.     Returns True if the addr looks like a return address.
  3205.  
  3206. RAD2DEG  ( r1 -- r2 )
  3207.         FloatingPoint          floating point
  3208.     (68k Mops only) Converts radians to degrees.
  3209.  
  3210. RANDOM  ( n -- rand*n )
  3211.         Arithmetic          QD
  3212.     Returns a random number from 0 to n-1 inclusive. n is limited to an Int 
  3213.     value. Larger than that means that numbers will be poorly distributed. 
  3214.     Uses the Toolbox call Random, but is not the same.
  3215.  
  3216. RANGEOF  ( val  lo hi -- )
  3217.         ControlStructures          Base/zBase
  3218.     Use in place of an OF in a CASE structure. Provides conditional 
  3219.     execution if val is within range lo to hi inclusive.
  3220.  
  3221. RDEPTH  ( -- #cells )
  3222.         ReturnStack          Base/pnuc1
  3223.     Leaves the number of cells occupied on the return stack. You may find 
  3224.     rdepth useful in debugging your programs.
  3225.  
  3226. Read1DocVec  ( -- code True  |  -- False )
  3227.         Events/pnuc1          Nuc.asm
  3228.     As set up, Read1DocVec assumes the file is a Mops dictionary. 
  3229.     Read1DocVec must point to a routine which will read the file designated 
  3230.     by the file object fFcb, close it, and return a result on the stack. 
  3231.     True indicates the OpenDocVec loop can continue. False means the loop 
  3232.     must terminate. You could return False, for example, on an error, or 
  3233.     simply if your application can't accept more than one document open at 
  3234.     a time.
  3235.  
  3236. RECT  ( --  : name )
  3237.         Quickdraw          QD
  3238.     A standard class for dealing with QuickDraw rectangles. Note that Mops 
  3239.     prefers to treat rectangles, and all QuickDraw coordinates for that 
  3240.     matter, in the form LEFT TOP RIGHT BOTTOM (l t r b), or x1 y1 x2 y2.
  3241.  
  3242. RECURSE  ( -- )
  3243.         Compiler          Base/zBase
  3244.     Compiles a call to the definition being compiled. (Its name isn't 
  3245.     visible yet, in case you want to call a previous definition with the 
  3246.     same name.)
  3247.  
  3248. REFILL  ( -- b )
  3249.         compiler          Nuc2.asm/pnuc2
  3250.     Attempts to (re)fill the input stream with another line.
  3251.  
  3252. RELCNT  ( -- n )
  3253.         OOP          Struct/pStruct
  3254.     A value. For testing - counts release: msgs to make sure we're 
  3255.     releasing everything.
  3256.  
  3257. RELEASE:  ( -- )
  3258.         OOP          Class/zClass
  3259.     Our standard destructor method. Any objects that allocate heap storage 
  3260.     will redefine this appropriately. Our convention is that an object will 
  3261.     release ALL its storage when it gets a release: message. Other methods 
  3262.     can be provided to partly release storage, as needed.
  3263.  
  3264. RELOC!  ( addr dest -- )
  3265.         Compiler          Nuc2.asm/pnuc3
  3266.     Converts the absolute address addr to relocatable and stores it at the 
  3267.     destination dest. Checks that a module address is not being stored 
  3268.     outside a module, a situation which can easily lead to a trouble when 
  3269.     the address is used.
  3270.  
  3271. RELOC!  ( addr1 addr2 -- )
  3272.         Compiler          Nuc2.asm/pnuc3
  3273.     Stores addr1 as a relocatable address at addr2.
  3274.  
  3275. RELOC,  ( abs-addr -- )
  3276.         Compiler          Nuc2.asm/pnuc3
  3277.     Converts abs-addr to relocatable, and adds it to the dictionary.
  3278.  
  3279. RELOC,  ( addr -- )
  3280.         Compiler          Nuc2.asm/pnuc3
  3281.     Stores addr as a relocatable address at HERE, and advances DP by 4.
  3282.  
  3283. RelocCode,  ( addr -- )
  3284.         Compiler          pnuc3
  3285.     (PowerMops only) Stores addr as a relocatable address in the code area 
  3286.     of the dictionary where CDP points, and advances CDP by 4.
  3287.  
  3288. REPEAT  ( -- )
  3289.         ControlStructures          Nuc2.asm/qpCond
  3290.     Standard. Marks bounds of BEGIN ... XXX ... REPEAT loop.
  3291.  
  3292. RESERVE  ( n -- )
  3293.         Compiler          base/pnuc3
  3294.     Allots the next n bytes in the dictionary (PowerMops: data area of the 
  3295.     dictionary) and erases them.
  3296.  
  3297. RESOURCE  ( --  : name )
  3298.         OOP          Struct/pStruct
  3299.     A standard class. Provides basic support for Toolbox resources.
  3300.  
  3301. REST  ( -- addr len )
  3302.         compiler          Nuc2.asm/pnuc2
  3303.     Returns the addr and len of the unparsed part of the current input line.
  3304.  
  3305. RESTORE-INPUT  ( x1...xn n -- )
  3306.         Compiler          Base/pBase
  3307.     Restores the current position in the input stream. n is the number of 
  3308.     cells of saved information - currently it is 4.
  3309.  
  3310. RESTPORT  ( -- )
  3311.         Windows          Window
  3312.     Restores the current GrafPort from the variable thePort via a call to 
  3313.     SetPort.
  3314.  
  3315. RESUME?  ( -- b )
  3316.         Events          Event
  3317.     A value. True if we've just received a Resume event.
  3318.  
  3319. ResumeVec  ( -- )
  3320.         Events          Event
  3321.     A vect. Called for resume.
  3322.  
  3323. RET  ( -- 13 )
  3324.         Strings          String/pString
  3325.     A constant, returns ascii value of a carriage return character.
  3326.  
  3327. REVEAL  ( -- )
  3328.         Compiler          Nuc2.asm/pnuc4
  3329.     Makes the current name visible again. See HIDE.
  3330.  
  3331. RNDWIND  ( -- 16 )
  3332.         Windows          Window
  3333.     A constant.
  3334.  
  3335. RNGERR  ( -- )
  3336.         System          Nuc.asm/pnuc1
  3337.     A system vector. Contains range_err, which is defined in file Base.
  3338.  
  3339. ROOM  ( -- n )
  3340.         Compiler          Nuc2.asm/pnuc1
  3341.     Returns the number of bytes left in the dictionary, or (PowerMops) in 
  3342.     the code area of the dictionary.
  3343.  
  3344. ROOM2  ( -- code-room data-room )
  3345.         Compiler          pnuc1
  3346.     PowerMops only. Returns the number of bytes left in the code and data 
  3347.     areas of the dictionary.
  3348.  
  3349. ROT  ( n1 n2 n3 -- n2 n3 n1 )
  3350.         Stack          Nuc2.asm/pnuc1
  3351.     
  3352.  
  3353. ROUND  ( r1 -- r2 )
  3354.         FloatingPoint          floating point
  3355.     (68k Mops only) Rounds the given float to the nearest integer by the 
  3356.     normal rules. Of course we still have a float.
  3357.  
  3358. RP!  ( -- )
  3359.         Stack          Nuc2.asm/pnuc1
  3360.     Clears the return stack.
  3361.  
  3362. RP0  ( -- addr )
  3363.         ReturnStack          Nuc2.asm/setup
  3364.     A value. Contains the base address of the return stack.
  3365.  
  3366. RP0  ( -- n )
  3367.         Compiler          Nuc2.asm/setup
  3368.     A value. The address of the base of the return stack.
  3369.  
  3370. RP@  ( -- addr )
  3371.         Stack          Nuc2.asm/pnuc1
  3372.     Returns the address of the top of the return stack before rp@ is 
  3373.     executed.
  3374.  
  3375. RSHIFT  ( n1 n2 -- n2 )
  3376.         Arithmetic          Nuc2.asm/pnuc1
  3377.     Shifts n1 to the right by n2 bit positions. e.g. 12 2 >> will yield 3 
  3378.     (1100) -> (0011). ANSI synonym for >>.
  3379.  
  3380. RSTA5  ( -- )
  3381.         Toolbox          Base
  3382.     (68k Mops only) Used for trap compilation. Used after a Toolbox trap 
  3383.     call. Registers A6 and A7 must be exchanged again and A5 set back.
  3384.  
  3385. RSTKSPACE  ( -- n )
  3386.         System          Nuc2.asm
  3387.     (68k Mops only) A value. Used by the startup code to allocate space for 
  3388.     the return stack. Initial value: 30000.
  3389.  
  3390. RUN  ( -- )
  3391.         System          Frontend/zFrontend
  3392.     System startup word for the Mops development environment.
  3393.  
  3394. run  ( -- )
  3395.         Compiler          Frontend/setup
  3396.     (PowerMops - a forward definition, finally resolved in zFrontend.) 
  3397.     Starts normal running of the Mops compiler, after initialization.
  3398.  
  3399. S"  ( -- addr len  : <chars>" )
  3400.         Lowstrings          Nuc2.asm/zBase
  3401.     At compile time, scans until " is encountered. At run time, pushes the 
  3402.     address and length of the enclosed string. E.g. " hi there" will, at 
  3403.     run time, push (addr len) for the string 'hi there'. The ANSI standard 
  3404.     doesn't define an interpretation:abehavior for this word; however in 
  3405.     Mops it may be used outside a definition, with the proviso that the 
  3406.     string will be stored at HERE, which means that more than one " ..." on 
  3407.     a line will give unexpected results.
  3408.  
  3409. S=  ( addr1 len1 addr2 len2 -- b )
  3410.         LowStrings          Nuc2.asm/pnuc2
  3411.     Case sensitive string comparison, true if equal.
  3412.  
  3413. S>D  ( n -- d )
  3414.         arithmetic          Nuc2.asm/pnuc1
  3415.     Sign-extends a single to a double.
  3416.  
  3417. SAmask  ( -- n )
  3418.         memory          Nuc2.asm
  3419.     (68k Mops only) A value. If you need to call _StripAddress, don't 
  3420.     bother, we've done it for you. Just use SAmask as a mask on the address 
  3421.     as in SAmask and. On the PowerPC all addresses are 32-bit so you don't 
  3422.     need this value.
  3423.  
  3424. SAVA5  ( -- )
  3425.         Toolbox          Base
  3426.     (68k Mops only) Used for trap compilation. Sets up for a Toolbox trap 
  3427.     call. Registers A6 and A7 must be exchanged and A5 set properly.
  3428.  
  3429. SAVE  ( --  : filename )
  3430.         System          Files/zPEF
  3431.     Saves the Mops dictionary image to disk with the given filename.
  3432.  
  3433. SAVE-INPUT  ( -- x1...xn n )
  3434.         Compiler          Base/pBase
  3435.     Saves the current position in the input stream. n is the number of 
  3436.     cells of saved information - currently it is 4.
  3437.  
  3438. SaveActW  ( -- wptr )
  3439.         Events          Window
  3440.     Saves actW over Suspend-Resume.
  3441.  
  3442. SAVEPORT  ( -- )
  3443.         Windows          Window
  3444.     Saves the current GrafPort in the variable thePort via a call to 
  3445.     GetPort.
  3446.  
  3447. SCAN  ( addr len c -- addr' len' )
  3448.         Lowstrings          Nuc2.asm/pnuc2
  3449.     Searches the string ( addr len ) for the character c. Leaves addr' the 
  3450.     address of the found char, and len' the remaining string length. If not 
  3451.     found, addr' will be one past the end of the string, and len' will be 
  3452.     zero. Assumes len is less than 64K (only 16 bits significant). Class 
  3453.     String+ provides a more complete character search in its chsearch: 
  3454.     method, which has case handling and 32-bit length.
  3455.  
  3456. SCAN-SRC  ( c -- )
  3457.         Lowstrings          Nuc2.asm/pnuc2
  3458.     Does a SCAN on the current source, and leaves the source descriptors 
  3459.     (src-addr src-len) updated.
  3460.  
  3461. SCON  ( --  : name  text )
  3462.         Strings          Base/zBase
  3463.     Defines a string constant. The first nonblank char after the name of 
  3464.     the SCON is the delimiter, and the string starts with the next 
  3465.     character. The string continues to the next occurrence of the 
  3466.     delimiter. So " can be used as usual, but anything else can be used 
  3467.     instead, e.g.: scon <name> /string containing " as non-delimiter/
  3468.  
  3469. SCREATE  ( addr len -- )
  3470.         Compiler          Nuc2.asm/qpCreate
  3471.     An interface to Create; takes an addr-len pair representing a string.
  3472.  
  3473. SCREENBITS  ( -- l t r b )
  3474.         QuickDraw          Struct/setup
  3475.     Gets dimension coordinates of host machine's display via the Mac global 
  3476.     variable screenbits.
  3477.  
  3478. SCROLL  ( dh dv -- )
  3479.         Console          Nuc2.asm/pnuc2
  3480.     Scrolls the current window by dh dv pixels. Uses fprect and ScrollRect.
  3481.  
  3482. segTable  ( -- addr )
  3483.         Compiler          setup
  3484.     (PowerMops only) a variable. The address of the base of the segment 
  3485.     table, used in addressing modules.
  3486.  
  3487. SELF  ( -- obj )
  3488.         OOP          Nuc2.asm/pnuc1
  3489.     Object reference to self. Only used in a class definition. SELF is not 
  3490.     necessarily the same as ^BASE, because of multiple inheritance.
  3491.  
  3492. SEND  ( ^obj selID -- )
  3493.         OOP          Class/qpClass
  3494.     Executes a method given its selID. Used in late binding. Can also be 
  3495.     used if you have a dynamically determined selector.
  3496.  
  3497. SEQUENCE  ( #elems --  : name )
  3498.         OOP          Struct/pStruct
  3499.     A standard class. SEQUENCE is a generic superclass for classes which 
  3500.     have multiple items which frequently need to be looked at in sequence. 
  3501.     At present the main function of Sequence is to implement the EACH: 
  3502.     method, which makes it very simple to deal with each element. Sequence 
  3503.     can be multiply inherited with any class which implements the FIRST?: 
  3504.     and NEXT?: methods. The actual implementation details are quite 
  3505.     irrelevant, as long as these methods are supported.
  3506.  
  3507. SETFWIND  ( -- )
  3508.         System          Nuc.asm/pnuc1
  3509.     A system vector. Normally contains (sf), defined in file Objint.
  3510.  
  3511. setup  ( -- )
  3512.         system          setup
  3513.     (PowerMops only) The word that gets initial execution.
  3514.  
  3515. SET_TO_CLASS  ( ^obj --  : cname )
  3516.         OOP          Class/zClass
  3517.     If you need to declare the object pointer before the class exists, use 
  3518.     SET_TO_CLASS once the class is defined, thus: ' someOP set_to_class 
  3519.     someClass.
  3520.  
  3521. SET_TO_CLASS  ( ^objptr --  : classname )
  3522.         OOP           Class/zClass
  3523.     If you need to declare the object pointer before the class exists, use 
  3524.     SET_TO_CLASS once the class is defined. :class SOMECLASS super{ object 
  3525.     } ' someOP set_to_class someClass etc.
  3526.  
  3527. SF!  ( r addr -- )
  3528.     PowerMops: ( addr -- ) ( F: r -- )
  3529.         FloatingPoint          pnuc1
  3530.     PowerMops only. Converts the number on the floating point stack to 
  3531.     single-precision (4-byte) format, and stores it at addr.
  3532.  
  3533. SF@  ( addr -- r )
  3534.     PowerMops: ( addr -- ) ( F: -- r )
  3535.         FloatingPoint          pnuc1
  3536.     PowerMops only. Fetches the single-precision (4-byte) floating point 
  3537.     number at addr to the floating point stack.
  3538.  
  3539. SFA  ( class -- sfa )
  3540.         OOPprimitive          Class/qpClass
  3541.     Given a pointer to a class, returns the superclass field address, which 
  3542.     is an N-way pointer.
  3543.  
  3544. SFDlgHook  ( -- ^proc )
  3545.         Files          Files
  3546.     (Not in PowerMops yet) A value. Used in std file calls. If non-zero, 
  3547.     points to the proc to be called while the std file dialog is up.
  3548.  
  3549. SFIND  ( addr len -- xt n | -- addr 0 )
  3550.         Compiler          Nuc2.asm/pnuc4
  3551.     As for FIND, except that the string for matching is designated by addr 
  3552.     and len.
  3553.  
  3554. SFLOC  ( -- x:y )
  3555.         Files          Files/pFiles
  3556.     Computes screen coordinates for top left of SF dialog box. Centers the 
  3557.     box horizontally, and a bit above the center vertically. Returns 
  3558.     coordinates as a packed 32-bit number.
  3559.  
  3560. SFOBJ  ( -- obj )
  3561.         Files          Files/pFiles
  3562.     A system object of class SFRec.
  3563.  
  3564. SFrec  ( --  : name )
  3565.         Files          Files/pFiles
  3566.     A standard class. Used to call Standard File Toolbox routines.
  3567.  
  3568. SHDR  ( addr len -- )
  3569.         Compiler          Nuc2.asm/pnuc4
  3570.     Creates a header for the passed-in string.
  3571.  
  3572. ShowPen  ( -- )
  3573.         Quickdraw          QD
  3574.     A direct call to ShowPen.
  3575.  
  3576. SIGN  ( n -- )
  3577.         NumericConversion          Nuc2.asm/pnuc2
  3578.     standard
  3579.  
  3580. SIN  ( r1 -- r2 )
  3581.         FloatingPoint          floating point
  3582.     (68k Mops only) Computes sine, given radians.
  3583.  
  3584. SKIP  ( addr len c -- addr' len' )
  3585.         Lowstrings          Nuc2.asm/pnuc2
  3586.     Similar to SCAN, but searches for the first character not equal to c.
  3587.  
  3588. SKIP-SRC  ( c -- )
  3589.         Lowstrings          Nuc2.asm/pnuc2
  3590.     Skips consecutive delimiters equal to c in the source.
  3591.  
  3592. SKIP-SRC+  ( c -- )
  3593.         Lowstrings          Nuc2.asm/pnuc2
  3594.     As for SKIP-SRC, but if a non-c character is not found, calls QUERY to 
  3595.     get another source line. This word is called by PARSE-SRC-WORD which is 
  3596.     called by WORD, and by doing things this way we can have xt lists etc. 
  3597.     extending over multiple lines.
  3598.  
  3599. SLEEPTICKS  ( -- n )
  3600.         Events          Nuc2.asm/pnuc1
  3601.     A value. Used in calls to WaitNextEvent. Default is 20 as set by file 
  3602.     Frontend.
  3603.  
  3604. SOURCE  ( -- addr len )
  3605.         compiler          Nuc2.asm/pnuc2
  3606.     Returns the addr and len of the current input line.
  3607.  
  3608. SOURCE-ID  ( -- n )
  3609.         compiler          Nuc2.asm/pnuc1
  3610.     Zero if input is coming from the keyboard; address of file object if 
  3611.     input is coming from a file.
  3612.  
  3613. SP!  ( -- )
  3614.         Stack          Nuc2.asm/pnuc1
  3615.     Clears the stack.
  3616.  
  3617. SP0  ( -- addr )
  3618.         Stack          Nuc2.asm/setup
  3619.     A value. Contains the base address of the stack.
  3620.  
  3621. SP0  ( -- n )
  3622.         Compiler          Nuc2.asm/setup
  3623.     A value. The address of the base of the data stack.
  3624.  
  3625. SP@  ( -- addr )
  3626.         Stack          Nuc2.asm/pnuc1
  3627.     Returns the address of the top of the stack before sp@ is executed.
  3628.  
  3629. SPACE  ( -- )
  3630.         Console          Nuc2.asm/pnuc2
  3631.     Emits an ascii blank (32).
  3632.  
  3633. SPACES  ( n -- )
  3634.         Console          Nuc2.asm/pnuc2
  3635.     Emits n ascii blanks.
  3636.  
  3637. SPAN  ( -- n )
  3638.         system          Nuc2.asm/pnuc2
  3639.     As in Forth-83. Returns the number of characters read by EXPECT.
  3640.  
  3641. SQRT  ( r -- sqrt )
  3642.     PowerMops: ( -- ) ( F: r -- sqrt )
  3643.         FloatingPoint          floating point/zFloating point
  3644.     
  3645.  
  3646. SRC-ADDR  ( -- addr )
  3647.         system          Nuc2.asm/pnuc1
  3648.     A value. The address of the current source text being interpreted.
  3649.  
  3650. SRC-LEN  ( -- n )
  3651.         system          Nuc2.asm/pnuc1
  3652.     A value. The number of characters still unprocessed in the current 
  3653.     source line.
  3654.  
  3655. SRC-START  ( -- addr )
  3656.         system          Nuc2.asm/pnuc1
  3657.     A value. The starting address of the current source line. Used by WORD.
  3658.  
  3659. SRCCOPY  ( -- 0 )
  3660.         Quickdraw          QD
  3661.     A constant, equate for drawing mode.
  3662.  
  3663. SRCOR  ( -- 1 )
  3664.         Quickdraw          QD
  3665.     A constant, equate for drawing mode.
  3666.  
  3667. SRCXOR  ( -- 2 )
  3668.         Quickdraw          QD
  3669.     A constant, equate for drawing mode.
  3670.  
  3671. STATE  ( --  compile-state )
  3672.         Compiler          Nuc2.asm/pnuc1
  3673.     This value is the compilation state of the Mops interpreter. A non-zero 
  3674.     value means that the definition of a word, method, or class is being 
  3675.     compiled.
  3676.  
  3677. STILLDOWN?  ( -- b )
  3678.         Events          Event
  3679.     (68k Mops only) A direct call to StillDown. Returns true if mouse 
  3680.     button is still down.
  3681.  
  3682. STKSPACE  ( -- n )
  3683.         System          Nuc2.asm
  3684.     A value. Used by the startup code to allocate space for the stack. Set 
  3685.     from the Install dialog. Initial value: 30000.
  3686.  
  3687. Str255  ( addr len -- ^buf255 )
  3688.         Strings          Base/pBase
  3689.     Converts text beginning at addr for len characters to a str255 type 
  3690.     string at buf255, leaving the addr of buf255. Note that you should use 
  3691.     the string right away as the next call to str255 will overwrite the 
  3692.     buffer.
  3693.  
  3694. STRING  ( --  : name )
  3695.         Strings          String/pString
  3696.     A standard class. This class is changed radically from Neon! We now 
  3697.     keep two offsets into a string - POS and LIM. POS marks the "current" 
  3698.     position, and LIM the "current" end. Most string operations operate on 
  3699.     the substring delimited by POS and LIM, which we call the active part 
  3700.     of the string. We also keep the size of the string (the real size, that 
  3701.     is) in an ivar, so that we can get it quickly without a system call. 
  3702.     See also class string+.
  3703.  
  3704. STRING+  ( --  : name )
  3705.         Strings          String+/zString+
  3706.     A standard class, subclass of string. Provides many extensions.
  3707.  
  3708. SUPER  ( -- obj )
  3709.         OOP          Class/zClass
  3710.     Use within a class method definition to refer to the current object, 
  3711.     but the superclass method will be invoked.
  3712.  
  3713. SUPER{  ( --  : cname1 cname2 ... } )
  3714.         OOP          Class/zClass
  3715.     Used to declare the superclass(es) when defining a class. Must follow 
  3716.     :class <className>.
  3717.  
  3718. SUSPEND?  ( -- b )
  3719.         Events          Event
  3720.     A value. True if we've just received a Suspend event.
  3721.  
  3722. SuspendVec  ( -- )
  3723.         Events          Event
  3724.     A vect. Called for suspend.
  3725.  
  3726. SWAP  ( n1 n2 -- n2 n1 )
  3727.         Stack          Nuc2.asm/pnuc1
  3728.     Swaps the top two stack cells.    
  3729.  
  3730. SYS  ( wptr -- )
  3731.         Events          Event
  3732.     System click handler, a direct call to SystemClick.
  3733.  
  3734. SYSINIT  ( -- )
  3735.         System          Objinit/zObjinit
  3736.     SYSINIT is the startup word, called via the vect objinit, that 
  3737.     initializes the nucleus objects for the Mops development environment 
  3738.     above Files.
  3739.  
  3740. SYSPAT  ( idx -- obj )
  3741.         Quickdraw          QD
  3742.     Given a zero-based index, returns the system object syspattn (class 
  3743.     pattern) which will be set to a resource pattern from the SysPatList. 
  3744.     Common usage is, e.g.: 4 syspat get: ** will yield a gray pattern 
  3745.     usable with calls like FillRect. See IM I-474 for the pattern list 
  3746.     (subtract 1 from the indices shown in IM).
  3747.  
  3748. TAN  ( r1 -- r2 )
  3749.         FloatingPoint          floating point
  3750.     (68k Mops only) Computes tangent, given radians.
  3751.  
  3752. TBOOL  ( b -- tbool )
  3753.         Toolbox          Window
  3754.     Makes a Mops boolean into a Toolbox boolean. Note that tbool should 
  3755.     only be used as a setup for a Toolbox call as the stack will be 
  3756.     mis-aligned until the Toolbox call is done.
  3757.  
  3758. tempRect  ( -- obj )
  3759.         System          QD
  3760.     A system object of class rect, useable at anytime for whatever you wish.
  3761.  
  3762. TFACE  ( n -- )
  3763.         QuickDraw          Window
  3764.     A direct call to TextFace.
  3765.  
  3766. TFONT  ( n -- )
  3767.         QuickDraw          Window
  3768.     A direct call to TextFont.
  3769.  
  3770. THEDLG  ( -- addr )
  3771.         Events          Event
  3772.     A variable.
  3773.  
  3774. THEMOUSE  ( -- obj )
  3775.         Events          Event
  3776.     The Mops mouse object.
  3777.  
  3778. THEN  ( -- )
  3779.         ControlStructures          Nuc2.asm/qpCond
  3780.     standard. Use with IF and NIF.
  3781.  
  3782. THEPOINT  ( -- addr )
  3783.         Events          Event
  3784.     A variable.
  3785.  
  3786. THEPORT  ( -- grfptr )
  3787.         QuickDraw          Nuc2.asm/setup
  3788.     Returns a grafPtr from the global variable thePort, which always points 
  3789.     to the current port.
  3790.  
  3791. THEWINDOW  ( -- addr )
  3792.         Windows          Window
  3793.     A variable.
  3794.  
  3795. THREAD  ( str-addr -- thread-addr )
  3796.         Compiler          Nuc2.asm/pnuc4
  3797.     Takes a counted string, and returns the address in CONTEXT of the start 
  3798.     of the appropriate dictionary thread.
  3799.  
  3800. THROW  ( n -- n | 0 -- )
  3801.         Errors          Nuc2.asm/pnuc3
  3802.     Standard Forth. If n is zero, drop it and continue. Otherwise exit to 
  3803.     the current CATCH and pass it n.
  3804.  
  3805. THROW  ( n -- )
  3806.         Errors          Nuc2.asm/pnuc3
  3807.     If n is non-zero, control passes to the last current CATCH caller, and 
  3808.     the stack depths are reset to what they were when CATCH was executed. 
  3809.     If n is zero, THROW does nothing. See the Standard for a full 
  3810.     description. In Mops, we have two variants--normal THROW, and 
  3811.     ThrowWithInfo. The latter is used by our normal error word DIE, and 
  3812.     also by ABORT", which both save the error info (including a message 
  3813.     string) before doing a normal THROW. ThrowWithInfo signals that the 
  3814.     saved error info is valid. Our default error handler DFLT_DIE, which is 
  3815.     called if no throw handler has been installed, tests this flag to 
  3816.     decide whether to call .ERR to display the info. If THROW is called 
  3817.     directly from code, it flags the error info invalid, which prevents 
  3818.     DFLT_DIE from calling .ERR and displaying spurious info.
  3819.  
  3820. throwHandler  ( -- addr )
  3821.         system          Nuc2.asm/pnuc1
  3822.     The address of the current THROW handler, or zero if none.
  3823.  
  3824. THROW_WITH_INFO  ( n -- )
  3825.         Errors          Nuc2.asm/pnuc3
  3826.     See THROW.
  3827.  
  3828. THUMB  ( -- 129 )
  3829.         Controls          Window
  3830.     A constant.
  3831.  
  3832. TIB  ( -- addr )
  3833.         system          Nuc2.asm/setup
  3834.     This value is the address of the terminal input buffer, where 
  3835.     characters typed at the keyboard are stored.
  3836.  
  3837. TMODE  ( n -- )
  3838.         QuickDraw          Window
  3839.     A direct call to TextMode.
  3840.  
  3841. TO_BE_WRITTEN  ( -- )
  3842.         Compiler          Base/pBase
  3843.     Causes error 79 ("Code still to be weritten here"). Useful when writing 
  3844.     new code, to put in the places where you haven't filled out the code 
  3845.     yet, to ensure you get a proper error if you actually try to execute 
  3846.     what you haven't written.
  3847.  
  3848. TRAV  ( xt parm -- )
  3849.         Compiler          Struct/pStruct
  3850.     Traverses the dictionary, passing each xt and the parm to the passed-in 
  3851.     proc.
  3852.  
  3853. TRAV-FROM  ( xt parm addr -- )
  3854.         Compiler          Struct/pStruct
  3855.     As for TRAV, but starts from the first word whose lfa is below or at 
  3856.     the given address.
  3857.  
  3858. TRAVERSE  ( addr dirn -- )
  3859.         compiler          Nuc2.asm/pnuc1
  3860.     Converts an addr pointing to one end of the name field.
  3861.  
  3862. TRUE  ( -- b )
  3863.         Arithmetic          Nuc2.asm/setup
  3864.     A constant = -1
  3865.  
  3866. TRUNC  ( r1 -- r2 )
  3867.         FloatingPoint          floating point
  3868.     (68k Mops only) Truncates the fractional portion of the given float. Of 
  3869.     course we still have a float.
  3870.  
  3871. TSIZE  ( n -- )
  3872.         QuickDraw          Window
  3873.     A direct call to TextSize.
  3874.  
  3875. TSTR  ( id -- )
  3876.         Resources          Base/pBase
  3877.     Displays the string from the mops.rsrc file with the given resource ID.
  3878.  
  3879. TUCK  ( n1 n2 -- n2 n1 n2 )
  3880.         Stack          Nuc2.asm/pnuc1
  3881.     Copies top stack item under second item.
  3882.  
  3883. TYPCHK  ( n -- )
  3884.         Errors          Base/zBase
  3885.     Checks that a non-object parameter to a word is of a certain type. We 
  3886.     give such parameters a unique type code and use TYPCHK.
  3887.  
  3888. TYPE  ( addr len -- )
  3889.         Console          Nuc2.asm/pnuc2
  3890.     Prints an (addr-len format) string on the screen or printer, by 
  3891.     executing the system vectors typevec and ptypevec. When Mops starts up, 
  3892.     typevec is vectored to the primitive (type) that prints a string on the 
  3893.     screen, and ptypevec is vectored to 2drop. So the default action of 
  3894.     type is to print a string on the screen only. Type increments value OUT 
  3895.     by len.
  3896.  
  3897. TYPE#  ( --  : lit )
  3898.         Errors          Base/zBase
  3899.     Displays given string number (a literal) from the mops.rsrc file.
  3900.  
  3901. TYPEVEC  ( addr len  -- )
  3902.         Console          Nuc2.asm/pnuc2
  3903.     This is the execution vector for type. When Mops starts up, typevec is 
  3904.     vectored to (type), the primitive that prints a string on the screen.
  3905.  
  3906. TYPE{  ( --  :  name1 name2 etc. )
  3907.         Compiler          Base/zBase
  3908.     Synonym for ENUM{. Defines an enumerated type. The first name in the 
  3909.     list will be defined as a constant of value 0, the second will get 
  3910.     value 1, and so on.
  3911.  
  3912. U.  ( n -- )
  3913.         Console          Nuc2.asm/pnuc2
  3914.     Prints a number as an unsigned number, followed by one space.
  3915.  
  3916. U.H  ( n -- )
  3917.         Console          Base/pBase
  3918.     Prints unsigned number in hex.
  3919.  
  3920. U.R  ( u n -- )
  3921.         Console          Struct/pStruct
  3922.     Prints the unsigned number u right justified in a field of width n. The 
  3923.     entire number is displayed, even if its width exceeds w.
  3924.  
  3925. U/  ( u1 u2 -- u1/u2 )
  3926.         Arithmetic          Nuc2.asm/pnuc1
  3927.     Unsigned divide.
  3928.  
  3929. U/MOD  ( u1 u2 -- rem quot )
  3930.         Arithmetic          Nuc2.asm/pnuc1
  3931.     divides the number u1 by u2 leaving the remainder and quotient. All 
  3932.     values are unsigned.
  3933.  
  3934. U<  ( u1 u2 -- b )
  3935.         Arithmetic          Nuc2.asm/pnuc1
  3936.     Comparison operator - unsigned less than.
  3937.  
  3938. U>  ( u1 u2 -- b )
  3939.         Arithmetic          Nuc2.asm/pnuc1
  3940.     Comparison operator - unsigned greater than.
  3941.  
  3942. UCFLAG  ( -- b )
  3943.         System          Nuc2.asm
  3944.     A value.
  3945.  
  3946. UD/MOD    ( ud_dvd ud_dsr -- ud_rem ud_quot )
  3947.         Arithmetic          pnuc1
  3948.     PowerMops only. Unsigned division of a 64-bit dividend by a 64-bit 
  3949.     divisor, giving 64-bit remainder and quotient.
  3950.  
  3951. UM*  ( u1 u2 -- ud )
  3952.         arithmetic          longmath/pnuc1
  3953.     Unsigned mixed multiply.
  3954.  
  3955. UM/MOD  ( d u -- urem uquot )
  3956.         Arithmetic          pnuc1
  3957.     PowerMops only. Unsigned mixed division of a 64-bit dividend by a 
  3958.     32-bit divisor, giving 32-bit remainder and quotient.
  3959.  
  3960. UMAX  ( n1 n2 -- n3 )
  3961.         Arithmetic          Base/pnuc1
  3962.     n3 is the maximum of n1 and n2 (unsigned).
  3963.  
  3964. UMD/MOD  ( ud_dvd u_dsr -- u_rem ud_quot )
  3965.         Arithmetic          pnuc1
  3966.     PowerMops only. Unsigned division of a 64-bit dividend by a 64-bit 
  3967.     divisor, giving a 32-bit remainder and a 64-bit quotient.
  3968.  
  3969. UMIN  ( n1 n2 -- n3 )
  3970.         Arithmetic          Base/pnuc1
  3971.     n3 is the minimum of n1 and n2 (unsigned).
  3972.  
  3973. UNDER+  ( n1 n2 n3 -- n1+n3 n2 )
  3974.         arithmetic          Args/pnuc1
  3975.     Equivalent to ROT + SWAP.
  3976.  
  3977. UNLOOP  ( -- )
  3978.         ControlStructures          Nuc2.asm/qpCond
  3979.     Used if you want to EXIT from within a DO loop - putting UNLOOP before 
  3980.     the EXIT correctly removes the loop info from the return stack.
  3981.  
  3982. UNPACK  ( x:y -- x y )
  3983.         Toolbox          Nuc2.asm/QD
  3984.     Unpacks a Toolbox point and puts the two signed integers on the stack. 
  3985.     Unpack is the opposite of pack. Even in PowerMops we still need PACK 
  3986.     and UNPACK, since the Toolbox takes and returns a packed Point in a 
  3987.     couple of places.
  3988.  
  3989. UNTIL  ( b -- )
  3990.         ControlStructures          Nuc2.asm/qpCond
  3991.     Standard Forth word. Stop looping if b is non-zero.
  3992.  
  3993. UNUSED  ( -- n )
  3994.         Compiler          Nuc2.asm/pnuc1
  3995.     Returns the number of bytes left in the dictionary, or (PowerMops) in 
  3996.     the code area of the dictionary. ANSI synonym for ROOM.
  3997.  
  3998. UPD-EVT  ( -- false )
  3999.         Events          Event
  4000.     An action word for fevent. Handles update events by sending a late 
  4001.     bound draw: message to the current window (but only if it is an 
  4002.     application window).
  4003.  
  4004. UPPER  ( addr len -- )
  4005.         LowStrings           Nuc2.asm/pnuc2
  4006.     Converts the given text to upper case.
  4007.  
  4008. UseFPU?  ( -- b )
  4009.         System           Nuc.asm
  4010.     (68k Mops only) The value FPU? is set non-zero by the startup code if 
  4011.     an FPU is present. If the FPU is present, FP words use it directly 
  4012.     without calling SANE.
  4013.  
  4014. UWITHIN?  ( u lo hi -- n b )
  4015.         Arithmetic          Nuc2.asm/pnuc1
  4016.     Returns true if lo <= n <= hi, using unsigned comparisons.
  4017.  
  4018. VALUE  ( n --  :  name )
  4019.         Memory          Nuc2.asm/qpCreate
  4020.     General purpose data variable defining word. Can use prefix operators 
  4021.     to manipulate ( ->, ++>, etc.). Can also late bind to objects stored in 
  4022.     values.
  4023.  
  4024. VAR  ( --  : name )
  4025.         OOP          Struct/pStruct
  4026.     The standard variable class. Subclass of longword that adds the +: and 
  4027.     -: methods. Useful as an ivar that maps into a Toolbox LONGINT record 
  4028.     structure.
  4029.  
  4030. VARIABLE  ( --  :  name )
  4031.         Memory          Nuc2.asm/qpCreate
  4032.     Standard Forth defining word. Use @ and ! for accessing. Will leave the 
  4033.     addr at runtime.
  4034.  
  4035. VECT  ( xt --  :  name )
  4036.         Compiler          Nuc2.asm/qpCreate
  4037.     Defines an execution variable that can hold and execute the xt of a 
  4038.     Mops word. Can use -> at runtime to change.
  4039.  
  4040. VOLNAME?  ( obj -- b )
  4041.         Files          Files/pFiles
  4042.     Given a string object, returns true if the string could be a volume 
  4043.     name (i.e. the name contains a ":" and its length is greater than 1.
  4044.  
  4045. W  ( -- 16-bit-value  : value )
  4046.         Toolbox          Base
  4047.     (68k Mops only) Used for toolbox calls. Compiles a 16 bit number. Same 
  4048.     as n makeint except n must be known at compilation time. More compact 
  4049.     than using n makeint.
  4050.  
  4051. W!  ( n addr -- )
  4052.         Memory          Nuc2.asm/pnuc1
  4053.     Stores the low 16 bits of n into word at given address.
  4054.  
  4055. W+!  ( n addr -- )
  4056.         Memory          Nuc2.asm/pnuc1
  4057.     Adds the low 16 bits of n to word at given address.
  4058.  
  4059. W,  ( n -- )
  4060.         Compiler          Nuc2.asm/pnuc3
  4061.     Compiles 2-byte w into the next available dictionary.
  4062.  
  4063. W,  ( n -- )
  4064.         Compiler          Nuc2.asm/pnuc3
  4065.     Stores the low 16 bits of n in the dictionary where DP points, and adds 
  4066.     2 to DP.
  4067.  
  4068. W-!  ( n addr -- )
  4069.         Memory          Nuc2.asm/pnuc1
  4070.     Subtracts the low 16 bits of n from word at given address.
  4071.  
  4072. W@  ( addr -- u )
  4073.         Memory          Nuc2.asm/pnuc1
  4074.     Fetches 16-bit value from given address, and zero-extends to 32 bits.
  4075.  
  4076. W@X  ( addr -- n )
  4077.         Memory          Nuc2.asm/pnuc1
  4078.     Fetches 16-bit value from given address, and sign-extends to 32 bits.
  4079.  
  4080. WAITCLICK  ( -- )
  4081.         Events          Event
  4082.     Waits until a mouse click or key event.
  4083.  
  4084. warnings?  ( -- b )
  4085.         System           Nuc.asm/pnuc1
  4086.     A value. If True, enables warnings of name and method redefinition. 
  4087.     Initially False.
  4088.  
  4089. WATCHCURS  ( -- )
  4090.         Quickdraw          QD
  4091.     Sets the cursor to this.
  4092.  
  4093. WDISPL!  ( addr addr2 -- )
  4094.         Compiler          Nuc2.asm/pnuc3
  4095.     Stores addr1 as a 2-byte self-relative displacement at addr2. The 
  4096.     converse of WDISPLACE.
  4097.  
  4098. WDISPLACE  ( addr -- addr' )
  4099.         Compiler          Nuc2.asm/pnuc3
  4100.     Similar to DISPLACE, but uses the (16-bit) word at addr.
  4101.  
  4102. Whash  ( str255 -- n )
  4103.         Compiler          Nuc2.asm/pnuc1
  4104.     Like HASH, but only the low 16 bits of n is the returned hash value.
  4105.  
  4106. WHILE  ( ? -- )
  4107.         ControlStructures          Nuc2.asm/qpCond
  4108.     standard. Continue if ? is non-zero.
  4109.  
  4110. WINDOW  ( --  : name )
  4111.         Windows          windowmod.txt
  4112.     A system class. The basic window class, with no controls.
  4113.  
  4114. WINDOWKIND  ( wptr -- w )
  4115.         Windows          Event
  4116.     Given a window pointer, returns the windowKind data from the window 
  4117.     record.
  4118.  
  4119. WITHIN?  ( n lo hi -- n b )
  4120.         Arithmetic          Nuc2.asm/pnuc1
  4121.     Returns true if lo <= n <= hi, using signed comparisons.
  4122.  
  4123. WNEavail?  ( -- b )
  4124.         Events          Nuc2.asm
  4125.     (68k Mops only) A value. Set True by the startup code if the 
  4126.     WaitNextEvent trap is available in the System being used. (On the 
  4127.     PowerPC it is always available.)
  4128.  
  4129. WORD  ( c -- addr )
  4130.         Lowstrings          Nuc2.asm/pnuc2
  4131.     Parses the source using c as the delimiter (using PARSE-WORD). Moves 
  4132.     the resulting string as a counted string to HERE, and returns this 
  4133.     address.
  4134.  
  4135. WORD"  ( -- addr )
  4136.         Lowstrings          Nuc2.asm/pnuc2
  4137.     Takes the "-delimited string from the input stream and stores it at 
  4138.     HERE, and then returns that address for further processing. Word" does 
  4139.     not map to uppercase.
  4140.  
  4141. WORD0  ( n -- 16-zero-bits )
  4142.         Toolbox          Nuc2.asm
  4143.     (68k Mops only) Pushes 16 zero bits (hex 0000) onto the stack. You can 
  4144.     use word0 to prepare for a Toolbox function call for the result, if the 
  4145.     function returns a Toolbox integer.
  4146.  
  4147. WORDS  ( -- )
  4148.         Compiler          Struct/pStruct
  4149.     Displays all words in the dictionary. Press spacebar to pause.
  4150.  
  4151. X-ADDR  ( --  : name )
  4152.         OOP          Struct/zStruct
  4153.     X-ADDR is an executable dictionary address class. The only significant 
  4154.     difference to DicAddr is that there is an Exec: method and no Get: 
  4155.     method. But if we ever have to separate code and data, having a 
  4156.     separate class could prove very useful.
  4157.  
  4158. X-ARRAY  ( #elems --  : name )
  4159.         OOP          Struct/zStruct
  4160.     A standard class. A subclass of ARRAY, can execute its elements (which 
  4161.     are xts of Mops words).
  4162.  
  4163. X-COL  ( #elems --  : name )
  4164.         OOP          Struct/zStruct
  4165.     A standard class. X-COL is a collection of executable word addresses. A 
  4166.     subclass of (col) and x-array.
  4167.  
  4168. XOFFA  ( class -- xoffa )
  4169.         OOPprimitive          Class/qpClass
  4170.     Given a pointer to a class, returns the xoffs field address. This is a 
  4171.     2-lbyte field which gives the indexing offset for LARGE_OBJ_ARRAYs. 
  4172.  
  4173. XOR  ( n1 n2 -- xor )
  4174.         Logical          Nuc2.asm/pnuc1
  4175.     Bitwise exclusive or.    
  4176.  
  4177. XOR>  ( n --  : word )
  4178.         Arithmetic           Args/zArgs
  4179.     A prefix operator, which does a bitwise exclusive or with n. Use for 
  4180.     values and named parameters and locals. Not for floats.
  4181.  
  4182. XT?  ( ?xt -- ?xt b )
  4183.         Compiler          Nuc2.asm/pnuc4
  4184.     Checks if ?xt is really a legal xt.
  4185.  
  4186. XTS{  ( --  :  name1 name2 etc. )
  4187.         Compiler          Base/zBase
  4188.     State-smart word to compile or stack a list of xts. Pulls words from 
  4189.     stream, until "}".
  4190.  
  4191. XWID  ( class -- xwid )
  4192.         OOPprimitive          Class/qpClass
  4193.     Given a class pointer, retuns the width of the indexed elements.
  4194.  
  4195. [  ( -- )
  4196.         Compiler          Nuc2.asm/zBase
  4197.     [ and ] do double duty. If they follow a method selector, they cause a 
  4198.     late bind. In any other context they turn compilation on and off 
  4199.     respectively.
  4200.  
  4201. [']  ( -- xt  : word )
  4202.         Compiler          Nuc2.asm/zBase
  4203.     In Neon, ' (tick) was state-smart, following Fig-Forth. We have now 
  4204.     followed the Forth-83 and ANSI standards in replacing the state-smart 
  4205.     tick with the two state-dumb forms ' (which ticks the next word in the 
  4206.     input stream at run time, no matter what) and ['] which is immediate, 
  4207.     must be used in a definition, and compiles a literal fetch of the xt of 
  4208.     the following word.
  4209.  
  4210. [CHAR]  ( --  : char )
  4211.         Strings          Base/zBase
  4212.     Compiles the ascii value of char as a literal.
  4213.  
  4214. [SELF]  ( obj selid -- )
  4215.         OOP          Class/zClass
  4216.     Late binds whatever is on the stack to the given method. e.g. obj get: 
  4217.     [self] . You must be sure that obj really does point to an object. 
  4218.     Synonym for **.
  4219.  
  4220. []  ( obj selid -- )
  4221.         OOP          Class/zClass
  4222.     Late binds whatever is on the stack to the given method. e.g. obj get: 
  4223.     [] . You must be sure that obj really does point to an object. Synonym 
  4224.     for **.
  4225.  
  4226. \  ( -- )
  4227.         Compiler          Nuc2.asm/pnuc2
  4228.     Backslash. Will cause compiler to ignore the rest of that line. Useful 
  4229.     for commenting.
  4230.  
  4231. ]  ( -- )
  4232.         Compiler          Nuc2.asm/zBase
  4233.     [ and ] do double duty. If they follow a method selector, they cause a 
  4234.     late bind. In any other context they turn compilation on and off 
  4235.     respectively.
  4236.  
  4237. ^BASE  ( -- addr )
  4238.         OOP          Class/qpClass
  4239.     Returns the address of the first ivar of the current object. Only used 
  4240.     in a class definition. Same as addr: self.
  4241.  
  4242. ^ELEM  ( idx -- addr )
  4243.         OOP          Class/qpClass
  4244.     Returns the address of the element with the given index, in the current 
  4245.     indexed object.
  4246.  
  4247. ^ELEM1  ( -- addr )
  4248.         OOP          Nuc2.asm/pnuc1
  4249.     As for ^ELEM, but assumes width = 1. Saves multiplying.
  4250.  
  4251. ^ELEM2  ( -- addr )
  4252.         OOP          Nuc2.asm/pnuc1
  4253.     As for ^ELEM, but assumes width = 2. Saves multiplying.
  4254.  
  4255. ^ELEM4  ( -- addr )
  4256.         OOP          Nuc2.asm/pnuc1
  4257.     As for ^ELEM, but assumes width = 4. Saves multiplying.
  4258.  
  4259. {  ( -- )
  4260.         Compiler          Args/zArgs
  4261.     Used to begin list of local variables and named input parameters. Note 
  4262.     that the compiler will first search this list, so these names take 
  4263.     precedence over other names in the dictionary.
  4264.  
  4265. }  ( -- )
  4266.         Compiler          Base/zBase
  4267.     Right brace. Denotes end of a list, such as a list of local variables, 
  4268.     xts, etc.
  4269.  
  4270.